标题: [已解决]批处理如何批量修改bat文件内容? [打印本页]
作者: woxingwoshu007 时间: 2009-4-17 19:09 标题: [已解决]批处理如何批量修改bat文件内容?
批处理批量修改bat文件内容本人在学习for中关于%%i的变量时,就文件教程写了一个bat教程内容如下- @echo off
- title 变量%%i中变量的用法
- color 5b
- echo by 【极度沉沦设计】QQ:805881441
- echo 以下是演示for语句中变量%%i的用法
- echo 演示开始........................
- echo 以下是变量%%~i的效果(删除引号)
- echo 删除引号规则
- echo 1:若字符串首尾同时存在引号,则删除首尾的引号
- echo 2:若字符串尾不存在引号,则删除字符串首的引号
- echo 3:如果字符串中间存在引号,或者只在尾部存在引号,则不删除
- call 第三节中引号.bat
- echo 以下是%%i不带参数是变量的效果(显示完整文件名字含后缀名)
- for /f "delims=" %%i in ('dir /b') do echo %%i
- pause
- echo 以下是变量%%~fi的效果(显示完整路径)
- for /f "delims=" %%i in ('dir /b') do echo %%~fi
- pause
- echo 以下是变量%%~di的效果(显示盘符)
- for /f "delims=" %%i in ('dir /b') do echo %%~di
- pause
- echo 以下是变量%%~pi的效果(显示除了盘符和文件名的路径)
- for /f "delims=" %%i in ('dir /b') do echo %%~pi
- pause
- echo 以下是变量%%~si的效果(显示疏略格式的路径名)
- for /f "delims=" %%i in ('dir /b') do echo %%~si
- pause
- echo 以下是变量%%~ni的效果(显示文件名不含后缀名)
- for /f "delims=" %%i In ('dir /b') do echo %%~ni
- pause
- echo 以下是变量%%~xi的效果(显示后缀名)
- for /f "delims=" %%i in ('dir /b') do echo %%~xi
- pause
- echo 以下是变量%%~ai的效果(显示文件属性)
- for /f "delims=" %%i in ('dir /b') do echo %%~ai
- pause
- echo 以下是变量%%~ti的效果(显示文件创建时间)
- for /f "delims=" %%i in ('dir /b') do echo %%~ti
- pause
- echo 以下是变量%%~zi的效果(显示文件大小)
- for /f "delims=" %%i in ('dir /b') do echo %%~zi
- pause
- echo 演示完毕..................................怎么样掌握了吧
- pause
复制代码
测试了几遍发觉一到pause部分总是提示:请按任意键继续..........
决定把bat内容部分的pause部分全部改写成pause>nul.内容如下:- @echo off
- title 变量%%i中变量的用法
- color 5b
- echo by 【极度沉沦设计】QQ:805881441
- echo 以下是演示for语句中变量%%i的用法
- echo 演示开始........................
- echo 以下是变量%%~i的效果(删除引号)
- echo 删除引号规则
- echo 1:若字符串首尾同时存在引号,则删除首尾的引号
- echo 2:若字符串尾不存在引号,则删除字符串首的引号
- echo 3:如果字符串中间存在引号,或者只在尾部存在引号,则不删除
- call 第三节中引号.bat
- echo 以下是%%i不带参数是变量的效果(显示完整文件名字含后缀名)
- for /f "delims=" %%i in ('dir /b') do echo %%i
- pause>nul
- echo 以下是变量%%~fi的效果(显示完整路径)
- for /f "delims=" %%i in ('dir /b') do echo %%~fi
- pause>nul
- echo 以下是变量%%~di的效果(显示盘符)
- for /f "delims=" %%i in ('dir /b') do echo %%~di
- pause>nul
- echo 以下是变量%%~pi的效果(显示除了盘符和文件名的路径)
- for /f "delims=" %%i in ('dir /b') do echo %%~pi
- pause>nul
- echo 以下是变量%%~si的效果(显示疏略格式的路径名)
- for /f "delims=" %%i in ('dir /b') do echo %%~si
- pause>nul
- echo 以下是变量%%~ni的效果(显示文件名不含后缀名)
- for /f "delims=" %%i In ('dir /b') do echo %%~ni
- pause>nul
- echo 以下是变量%%~xi的效果(显示后缀名)
- for /f "delims=" %%i in ('dir /b') do echo %%~xi
- pause>nul
- echo 以下是变量%%~ai的效果(显示文件属性)
- for /f "delims=" %%i in ('dir /b') do echo %%~ai
- pause>nul
- echo 以下是变量%%~ti的效果(显示文件创建时间)
- for /f "delims=" %%i in ('dir /b') do echo %%~ti
- pause>nul
- echo 以下是变量%%~zi的效果(显示文件大小)
- for /f "delims=" %%i in ('dir /b') do echo %%~zi
- pause>nul
- echo 演示完毕..................................怎么样掌握了吧
- pause>nul
复制代码
::::求一个批处理能够批量把pause改写成pause>nul
尽可能详细点哦带上注释最好,新手学习ing]
[ 本帖最后由 woxingwoshu007 于 2009-4-20 17:10 编辑 ]
作者: zjw767676 时间: 2009-4-17 23:58
投机取巧O(∩_∩)O~
- @echo off
- for /f "delims=" %%a in (b.bat) do (
- if "%%a"=="pause" (
- echo pause^>nul>>b.txt
- ) else (
- echo %%a>>b.txt
- )
- )
- pause
复制代码
[ 本帖最后由 zjw767676 于 2009-4-18 00:00 编辑 ]
作者: woxingwoshu007 时间: 2009-4-18 13:58 标题: 回复 2楼 的帖子
呵呵,还是得感谢你.你的批处理只能是在原来的基础上新增了pause>nul
追加进去的.
我要的是直接修改pause>nul
而不是在原来内容的后面追加
作者: Batcher 时间: 2009-4-18 14:26
- @echo off
- 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楼 的帖子
问题已经解决:我自己琢磨了一个方法代码如下,共享下::- @echo off
- title 批量修改文本内容
- color 5b
- echo by 【极度沉沦】
- for /f "delims=" %%i in (3.bat) do (
- echo %%i|findstr /i "pause"&&echo %%i^>nul>>new.bat||echo %%i>>new.bat)
- 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 |