Board logo

标题: [已解决]批处理如何批量修改bat文件内容? [打印本页]

作者: woxingwoshu007    时间: 2009-4-17 19:09     标题: [已解决]批处理如何批量修改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 编辑 ]
作者: zjw767676    时间: 2009-4-17 23:58

投机取巧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 编辑 ]
作者: woxingwoshu007    时间: 2009-4-18 13:58     标题: 回复 2楼 的帖子

呵呵,还是得感谢你.你的批处理只能是在原来的基础上新增了pause>nul
追加进去的.
我要的是直接修改pause>nul
而不是在原来内容的后面追加
作者: Batcher    时间: 2009-4-18 14:26

  1. @echo off
  2. sed -i "s/pause/pause>nul/g" a.bat
复制代码
第三方命令行工具sed.exe下载地址:
http://bbs.bathome.net/thread-3981-1-1.html
作者: woxingwoshu007    时间: 2009-4-20 17:09     标题: 回复 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
复制代码

作者: Batcher    时间: 2009-4-20 18:02     标题: 回复 5楼 的帖子

你这个代码跟2楼的代码没有本质区别
作者: htnet11    时间: 2009-4-20 18:05

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

目前想不出怎么样在源文件里改
作者: zqz0012005    时间: 2009-4-20 18:23

楼主也喜欢一稿多投?
http://bbs.verybat.org/thread-17207-1-1.html
注意你的方法不支持特殊字符,而bat文件很少有不包含特殊字符的。
你5楼代码中的ID【极度沉沦】忘改了
作者: Batcher    时间: 2009-4-20 19:32     标题: 回复 7楼 的帖子

那就不要浪费时间去想了,直接修改源文件的思路是不可行的。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2