Board logo

标题: [文本处理] [已解决]批处理怎样批量更换文件夹内同规格的文本内容? [打印本页]

作者: 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开始
  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "tokens=1* delims==" %%a in ('more +10^<"%~nx0"') do set "#%%a=%%b"
  3. for %%a in (*.txt) do (
  4.     (for /f "usebackq tokens=1-5* delims==-" %%b in ("%%a") do (
  5.         set/a a=%%b%%9
  6.         for %%h in (!a!) do echo;%%b=%%c-%%d-!#%%h!-%%g
  7.     ))>$
  8.     move $ "%%a"
  9. )
  10. exit
  11. 0=一一一一一一-复复复复
  12. 1=二二二二二二-冰冰冰冰
  13. 2=三三三三三三-火火火火
  14. 3=四四四四四四-流流流流
  15. 4=五五五五五五-神神神神
  16. 5=六六六六六六-天天天天
  17. 6=七七七七七七-梦梦梦梦
  18. 7=八八八八八八-龙龙龙龙
  19. 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 编辑

那试试下面这个:
  1. @echo off
  2. set str1=一一一一一一-复复复复-王二猫呀
  3. set str2=1-二二二二二二-冰冰冰冰-王二宝贝
  4. set str3=1-三三三三三三-火火火火-狗屁王二
  5. set str4=四四四四四四-流流流流-猫呀宝贝
  6. set str5=五五五五五五-神神神神-爱是对的
  7. set str6=六六六六六六-天天天天-法国工会
  8. set str7=七七七七七七-梦梦梦梦-几乎涵盖
  9. set str8=八八八八八八-龙龙龙龙-热特天天
  10. set str9=九九九九九九-猛猛猛猛-尽快解决
  11. md new 2>nul
  12. for %%i in (old\*.ini) do (
  13. set n=0
  14. for /f "usebackq tokens=1,2 delims=-" %%a in ("%%i") do (
  15. set /a n+=1
  16. call call echo.%%a-%%b-%%%%str%%n%%%%%% >>new\%%~nxi
  17. set /a n=n%%9
  18. )
  19. )
  20. 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文件所在的目录执行:
  1. @echo off
  2. set str1=一一一一一一-复复复复-王二猫呀
  3. set str2=1-二二二二二二-冰冰冰冰-王二宝贝
  4. set str3=1-三三三三三三-火火火火-狗屁王二
  5. set str4=四四四四四四-流流流流-猫呀宝贝
  6. set str5=五五五五五五-神神神神-爱是对的
  7. set str6=六六六六六六-天天天天-法国工会
  8. set str7=七七七七七七-梦梦梦梦-几乎涵盖
  9. set str8=八八八八八八-龙龙龙龙-热特天天
  10. set str9=九九九九九九-猛猛猛猛-尽快解决
  11. for %%i in (*.ini) do (
  12. set n=0&echo.[登陆列表]>>$
  13. for /f "usebackq skip=1 tokens=1,2 delims=-" %%a in ("%%i") do (
  14. set /a n+=1
  15. call call echo.%%a-%%b-%%%%str%%n%%%%%% >>$
  16. set /a n=n%%9
  17. )
  18. move /y $ "%%i"
  19. )
  20. 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