标题: [文本处理] [已解决]批处理怎样批量更换文件夹内同规格的文本内容? [打印本页]
作者: laimao 时间: 2011-5-2 02:20 标题: [已解决]批处理怎样批量更换文件夹内同规格的文本内容?
例:文件夹内存放了100份文本格式为.ini 每个文本为999行 文本的格式如下
[登录列表]
0=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
1=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
2=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
3=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
4=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
5=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
6=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
7=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
8=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
9=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
10=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
11=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
12=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
13=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
14=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
15=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
16=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
17=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
...
就是把 第2个 - 到最后的内容替换掉 例:华华华华华华-冰冰冰冰-狗屁宝贝
更改的行数为9行 可以自定义修改需更换的9行内容 每隔9行重复更换
例:要把文件夹内的所有文本批量更换成以下格式 :
[登录列表]
0=1-1-一一一一一一-复复复复-狗屁
1=1-1-二二二二二二-冰冰冰冰-狗屁
2=1-1-三三三三三三-火火火火-狗屁
3=1-1-四四四四四四-流流流流-狗屁
4=1-1-五五五五五五-神神神神-狗屁
5=1-1-六六六六六六-天天天天-狗屁
6=1-1-七七七七七七-梦梦梦梦-狗屁
7=1-1-八八八八八八-龙龙龙龙-狗屁
8=1-1-九九九九九九-猛猛猛猛-狗屁
9=1-1-一一一一一一-复复复复-狗屁
10=1-1-二二二二二二-冰冰冰冰-狗屁
11=1-1-三三三三三三-火火火火-狗屁
12=1-1-四四四四四四-流流流流-狗屁
13=1-1-五五五五五五-神神神神-狗屁
14=1-1-六六六六六六-天天天天-狗屁
15=1-1-七七七七七七-梦梦梦梦-狗屁
16=1-1-八八八八八八-龙龙龙龙-狗屁
17=1-1-九九九九九九-猛猛猛猛-狗屁
...
感谢版主 hanyeguxing 和好心人 yjstone
作者: hanyeguxing 时间: 2011-5-2 08:24
本帖最后由 hanyeguxing 于 2011-5-2 14:51 编辑
1:以 = 和 - 为分隔
2:文本行号从0开始- @echo off&setlocal enableDelayedExpansion
- for /f "tokens=1* delims==" %%a in ('more +10^<"%~nx0"') do set "#%%a=%%b"
- for %%a in (*.txt) do (
- (for /f "usebackq tokens=1-5* delims==-" %%b in ("%%a") do (
- set/a a=%%b%%9
- for %%h in (!a!) do echo;%%b=%%c-%%d-!#%%h!-%%g
- ))>$
- move $ "%%a"
- )
- exit
- 0=一一一一一一-复复复复
- 1=二二二二二二-冰冰冰冰
- 2=三三三三三三-火火火火
- 3=四四四四四四-流流流流
- 4=五五五五五五-神神神神
- 5=六六六六六六-天天天天
- 6=七七七七七七-梦梦梦梦
- 7=八八八八八八-龙龙龙龙
- 8=九九九九九九-猛猛猛猛
复制代码
作者: laimao 时间: 2011-5-2 13:08
不行啊 运行后文本里的内容都被清空变空白的了。。。
作者: hanyeguxing 时间: 2011-5-2 13:22
1,文本的编码是 ansi 吗?
2,你是否对代码进行了修改?进行了哪些修改?
3,代码中 exit 下面的内容也要
作者: laimao 时间: 2011-5-2 14:26
4# hanyeguxing
文本是ansi的。代码是完全复制的没有更改没有错。是不是把批处理放在文件夹内运行?
作者: hanyeguxing 时间: 2011-5-2 14:40
当然了。。。
作者: laimao 时间: 2011-5-2 14:47
6# hanyeguxing
那都对的啊。。。还是不行 运行了 文本就清空了。。什么都没了
作者: hanyeguxing 时间: 2011-5-2 14:51
已修改,少打了 $
作者: laimao 时间: 2011-5-2 15:18
8# hanyeguxing
可以用了哦。非常感谢。麻烦想请您在优化一下 。能不能把TXT格式的 改成 INI的?
还有 把第2个 - 到最后的内容都替换掉 例:华华华华华华-冰冰冰冰-狗屁宝贝
文本批量更换成以下格式 :
0=1-1-一一一一一一-复复复复-王二猫呀
1=1-1-二二二二二二-冰冰冰冰-王二宝贝
2=1-1-三三三三三三-火火火火-狗屁王二
3=1-1-四四四四四四-流流流流-猫呀宝贝
4=1-1-五五五五五五-神神神神-爱是对的
5=1-1-六六六六六六-天天天天-法国工会
6=1-1-七七七七七七-梦梦梦梦-几乎涵盖
7=1-1-八八八八八八-龙龙龙龙-热特天天
8=1-1-九九九九九九-猛猛猛猛-尽快解决
作者: laimao 时间: 2011-5-2 15:49
版主帮帮忙啊 急用啊。。。
作者: laimao 时间: 2011-5-2 16:19
有木有人在啊 帮帮忙啊。。。
作者: yjstone 时间: 2011-5-2 16:24
本帖最后由 yjstone 于 2011-5-2 17:07 编辑
那试试下面这个:- @echo off
- set str1=一一一一一一-复复复复-王二猫呀
- set str2=1-二二二二二二-冰冰冰冰-王二宝贝
- set str3=1-三三三三三三-火火火火-狗屁王二
- set str4=四四四四四四-流流流流-猫呀宝贝
- set str5=五五五五五五-神神神神-爱是对的
- set str6=六六六六六六-天天天天-法国工会
- set str7=七七七七七七-梦梦梦梦-几乎涵盖
- set str8=八八八八八八-龙龙龙龙-热特天天
- set str9=九九九九九九-猛猛猛猛-尽快解决
- md new 2>nul
- for %%i in (old\*.ini) do (
- set n=0
- for /f "usebackq tokens=1,2 delims=-" %%a in ("%%i") do (
- set /a n+=1
- call call echo.%%a-%%b-%%%%str%%n%%%%%% >>new\%%~nxi
- set /a n=n%%9
- )
- )
- pause
复制代码
这里假定你要替换的ini文件都在批处理所在目录的old目录,更换后的ini放在new目录
作者: Batcher 时间: 2011-5-2 16:36
9# laimao
能否把所有的需求全部更新到顶楼?
作者: laimao 时间: 2011-5-2 16:37
12# yjstone
您的这个很好用哦 非常感谢!也非常感谢版主 祝你们好运常在!
作者: laimao 时间: 2011-5-2 17:24
12# yjstone
实在不好意思 麻烦您能不能再帮忙改下。还有能不能修改完后直接覆盖原文件?不用新建文件夹新建文件。
我漏了个首行是 [登陆列表]
[登陆列表]
0=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
1=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
2=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
3=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
4=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
5=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
6=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
7=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
8=1-1-华华华华华华-冰冰冰冰-狗屁宝贝
...
文本批量更换成以下格式 :
[登陆列表]
0=1-1-一一一一一一-复复复复-王二猫呀
1=1-1-二二二二二二-冰冰冰冰-王二宝贝
2=1-1-三三三三三三-火火火火-狗屁王二
3=1-1-四四四四四四-流流流流-猫呀宝贝
4=1-1-五五五五五五-神神神神-爱是对的
5=1-1-六六六六六六-天天天天-法国工会
6=1-1-七七七七七七-梦梦梦梦-几乎涵盖
7=1-1-八八八八八八-龙龙龙龙-热特天天
8=1-1-九九九九九九-猛猛猛猛-尽快解决
...
作者: laimao 时间: 2011-5-2 17:26
13# Batcher
好的 还有一点点要修改 修改完 我都放到顶楼去
作者: yjstone 时间: 2011-5-2 17:34
本帖最后由 yjstone 于 2011-5-2 17:59 编辑
15# laimao
这个容易,改一下就可以了,把下面的代码放到你要替换的ini文件所在的目录执行:- @echo off
- set str1=一一一一一一-复复复复-王二猫呀
- set str2=1-二二二二二二-冰冰冰冰-王二宝贝
- set str3=1-三三三三三三-火火火火-狗屁王二
- set str4=四四四四四四-流流流流-猫呀宝贝
- set str5=五五五五五五-神神神神-爱是对的
- set str6=六六六六六六-天天天天-法国工会
- set str7=七七七七七七-梦梦梦梦-几乎涵盖
- set str8=八八八八八八-龙龙龙龙-热特天天
- set str9=九九九九九九-猛猛猛猛-尽快解决
- for %%i in (*.ini) do (
- set n=0&echo.[登陆列表]>>$
- for /f "usebackq skip=1 tokens=1,2 delims=-" %%a in ("%%i") do (
- set /a n+=1
- call call echo.%%a-%%b-%%%%str%%n%%%%%% >>$
- set /a n=n%%9
- )
- move /y $ "%%i"
- )
- pause
复制代码
作者: laimao 时间: 2011-5-2 17:51
本帖最后由 laimao 于 2011-5-2 18:02 编辑
17# yjstone
[登陆列表] 是原本就存在的
这个改完会变成这样 上面还会多了一空行
[登陆列表]--复复复复-王二猫呀
0=1-1-一一一一一一-复复复复-王二猫呀
1=1-1-二二二二二二-冰冰冰冰-王二宝贝
2=1-1-三三三三三三-火火火火-狗屁王二
3=1-1-四四四四四四-流流流流-猫呀宝贝
4=1-1-五五五五五五-神神神神-爱是对的
5=1-1-六六六六六六-天天天天-法国工会
6=1-1-七七七七七七-梦梦梦梦-几乎涵盖
7=1-1-八八八八八八-龙龙龙龙-热特天天
8=1-1-一一一一一一-复复复复-王二猫呀
作者: yjstone 时间: 2011-5-2 18:00
已改好了。加 一个 skip=1 就可以了。
作者: laimao 时间: 2011-5-2 18:12
19# yjstone
好了 好了 完美了 太感谢了!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |