[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]批处理如何批量修改bat文件内容?

批处理批量修改bat文件内容本人在学习for中关于%%i的变量时,就文件教程写了一个bat教程内容如下
  1. @echo off
  2. title 变量%%i中变量的用法
  3. color 5b
  4. echo by 【极度沉沦设计】QQ:805881441
  5. echo 以下是演示for语句中变量%%i的用法
  6. echo 演示开始........................
  7. echo 以下是变量%%~i的效果(删除引号)
  8. echo 删除引号规则
  9. echo 1:若字符串首尾同时存在引号,则删除首尾的引号
  10. echo 2:若字符串尾不存在引号,则删除字符串首的引号
  11. echo 3:如果字符串中间存在引号,或者只在尾部存在引号,则不删除
  12. call 第三节中引号.bat
  13. echo 以下是%%i不带参数是变量的效果(显示完整文件名字含后缀名)
  14. for /f "delims=" %%i in ('dir /b') do echo %%i
  15. pause
  16. echo 以下是变量%%~fi的效果(显示完整路径)
  17. for /f "delims=" %%i in ('dir /b') do echo %%~fi
  18. pause
  19. echo 以下是变量%%~di的效果(显示盘符)
  20. for /f "delims=" %%i in ('dir /b') do echo %%~di
  21. pause
  22. echo 以下是变量%%~pi的效果(显示除了盘符和文件名的路径)
  23. for /f "delims=" %%i in ('dir /b') do echo %%~pi
  24. pause
  25. echo 以下是变量%%~si的效果(显示疏略格式的路径名)
  26. for /f "delims=" %%i in ('dir /b') do echo %%~si
  27. pause
  28. echo 以下是变量%%~ni的效果(显示文件名不含后缀名)
  29. for /f "delims=" %%i In ('dir /b') do echo %%~ni
  30. pause
  31. echo 以下是变量%%~xi的效果(显示后缀名)
  32. for /f "delims=" %%i in ('dir /b') do echo %%~xi
  33. pause
  34. echo 以下是变量%%~ai的效果(显示文件属性)
  35. for /f "delims=" %%i in ('dir /b') do echo %%~ai
  36. pause
  37. echo 以下是变量%%~ti的效果(显示文件创建时间)
  38. for /f "delims=" %%i in ('dir /b') do echo %%~ti
  39. pause
  40. echo 以下是变量%%~zi的效果(显示文件大小)
  41. for /f "delims=" %%i in ('dir /b') do echo %%~zi
  42. pause
  43. echo 演示完毕..................................怎么样掌握了吧
  44. pause
复制代码
测试了几遍发觉一到pause部分总是提示:请按任意键继续..........
决定把bat内容部分的pause部分全部改写成pause>nul.内容如下:
  1. @echo off
  2. title 变量%%i中变量的用法
  3. color 5b
  4. echo by 【极度沉沦设计】QQ:805881441
  5. echo 以下是演示for语句中变量%%i的用法
  6. echo 演示开始........................
  7. echo 以下是变量%%~i的效果(删除引号)
  8. echo 删除引号规则
  9. echo 1:若字符串首尾同时存在引号,则删除首尾的引号
  10. echo 2:若字符串尾不存在引号,则删除字符串首的引号
  11. echo 3:如果字符串中间存在引号,或者只在尾部存在引号,则不删除
  12. call 第三节中引号.bat
  13. echo 以下是%%i不带参数是变量的效果(显示完整文件名字含后缀名)
  14. for /f "delims=" %%i in ('dir /b') do echo %%i
  15. pause>nul
  16. echo 以下是变量%%~fi的效果(显示完整路径)
  17. for /f "delims=" %%i in ('dir /b') do echo %%~fi
  18. pause>nul
  19. echo 以下是变量%%~di的效果(显示盘符)
  20. for /f "delims=" %%i in ('dir /b') do echo %%~di
  21. pause>nul
  22. echo 以下是变量%%~pi的效果(显示除了盘符和文件名的路径)
  23. for /f "delims=" %%i in ('dir /b') do echo %%~pi
  24. pause>nul
  25. echo 以下是变量%%~si的效果(显示疏略格式的路径名)
  26. for /f "delims=" %%i in ('dir /b') do echo %%~si
  27. pause>nul
  28. echo 以下是变量%%~ni的效果(显示文件名不含后缀名)
  29. for /f "delims=" %%i In ('dir /b') do echo %%~ni
  30. pause>nul
  31. echo 以下是变量%%~xi的效果(显示后缀名)
  32. for /f "delims=" %%i in ('dir /b') do echo %%~xi
  33. pause>nul
  34. echo 以下是变量%%~ai的效果(显示文件属性)
  35. for /f "delims=" %%i in ('dir /b') do echo %%~ai
  36. pause>nul
  37. echo 以下是变量%%~ti的效果(显示文件创建时间)
  38. for /f "delims=" %%i in ('dir /b') do echo %%~ti
  39. pause>nul
  40. echo 以下是变量%%~zi的效果(显示文件大小)
  41. for /f "delims=" %%i in ('dir /b') do echo %%~zi
  42. pause>nul
  43. echo 演示完毕..................................怎么样掌握了吧
  44. pause>nul
复制代码
::::求一个批处理能够批量把pause改写成pause>nul
尽可能详细点哦带上注释最好,新手学习ing]

[ 本帖最后由 woxingwoshu007 于 2009-4-20 17:10 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

投机取巧O(∩_∩)O~
  1. @echo off
  2. for /f "delims=" %%a in (b.bat) do (
  3.    if "%%a"=="pause" (
  4.       echo pause^>nul>>b.txt
  5.            ) else (
  6.       echo %%a>>b.txt
  7.    )
  8. )
  9. pause
复制代码

[ 本帖最后由 zjw767676 于 2009-4-18 00:00 编辑 ]
有一种爱叫放弃

TOP

回复 2楼 的帖子

呵呵,还是得感谢你.你的批处理只能是在原来的基础上新增了pause>nul
追加进去的.
我要的是直接修改pause>nul
而不是在原来内容的后面追加

TOP

  1. @echo off
  2. sed -i "s/pause/pause>nul/g" a.bat
复制代码
第三方命令行工具sed.exe下载地址:
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4楼 的帖子

问题已经解决:我自己琢磨了一个方法代码如下,共享下::
  1. @echo off
  2. title 批量修改文本内容
  3. color 5b
  4. echo by 【极度沉沦】
  5. for /f "delims=" %%i in (3.bat) do (
  6. echo %%i|findstr /i "pause"&&echo %%i^>nul>>new.bat||echo %%i>>new.bat)
  7. pause>nul
复制代码

TOP

回复 5楼 的帖子

你这个代码跟2楼的代码没有本质区别
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

只能是读一行,做判断,如果不是pause的,就直接写到新文件里去,
如果是pause的,就改写后写到新文件里去。

目前想不出怎么样在源文件里改

TOP

楼主也喜欢一稿多投?
http://bbs.verybat.org/thread-17207-1-1.html
注意你的方法不支持特殊字符,而bat文件很少有不包含特殊字符的。
你5楼代码中的ID【极度沉沦】忘改了
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 7楼 的帖子

那就不要浪费时间去想了,直接修改源文件的思路是不可行的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表