Board logo

标题: 请教如何批量修改TXT里的字符 [打印本页]

作者: YoDe     时间: 2007-12-9 00:50    标题: 请教如何批量修改TXT里的字符

我想做一个批处理 其中1.txt如下 %ProgramFiles%\bhbsdrx.inf %ProgramFiles%\bjifays.inf %ProgramFiles%\jguiwef.inf %ProgramFiles%\meex.exe %ProgramFiles%\vmhrlbm.inf %ProgramFiles%\Yahoo! %ProgramFiles%\ah.bat %ProgramFiles%\ah.exe %ProgramFiles%\internet.exe %ProgramFiles%\SysInfo.wmp %ProgramFiles%\SysInfo.tmp bat文件如下 @echo off for /f "delims==" %%a in (c:\我的音乐\1.txt) do (set %%a="%%a") for /f "delims==" %%a in (c:\我的音乐\1.txt) do md %%a >NUL&&for /f "delims==" %%a in (c:\我的音乐\1.txt) do attrib %%a +r +s +a +h >NUL&&for /f "delims==" %%a in (c:\我的音乐\1.txt) do cacls %%a /c /e /d everyone >NUL 我想用批处理给1.txt的文件每行加个两个冒号 该如何做 比如 ”%ProgramFiles%\SysInfo.tmp“ 还有 for /f "delims==" %%a in (c:\我的音乐\1.txt) do (set %%a="%%a") 其中(set %%a="%%a") 是否要加转义符^该如何加? (set %%a=^"%%a")

作者: lxmxn     时间: 2007-12-9 04:05
我想用批处理给1.txt的文件每行加个两个冒号 该如何做 比如 ”%ProgramFiles%\SysInfo.tmp“
汗一个…… 加引号直接 echo “%%a”。 另外,你的几个for可以用一个for来代替。

作者: YoDe     时间: 2007-12-9 13:27
请教了 代码呢 我想知道<<这符号的作用 比如<<nul是什么意思 如^具体用在哪 请给我个地址 我搜索不到……基本的的DOS符号大全我都看了 至于像<<这些特殊的我还不清楚 对了你说所的一个FOR是否在后面加一个&&成功后连接符?

作者: HAT     时间: 2007-12-9 13:34
斑竹,把<<的这个用法加到你那个帖子里吧:) CMD/DOS下符号的作用参考 www.cn-dos.net/forum ...

作者: YoDe     时间: 2007-12-9 13:34
谢谢4楼朋友 那符号的命令还不太清楚怎么用你能帮我解释一下下面代码吗: E: cd e:\网络游戏 dir/b >1.txt for /f "skip=1 delims=" %%a in (e:\网络游戏\1.txt) do set/p=%%a,<nul>>"C:\Documents and Settings\Administrator\桌面\排除删除.txt" for /f "delims==" %%a in (c:\我的音乐\1.txt) do (@echo "%%a" <<4.txt) OK 我要的就是for那一句 set/p=%%a,<nul>>这里到底是什么意思 一下字出现了我都不明白的符号 可是文本后面还有空格 该如何办呢 字符串里也有 真晕 那么有没有办法做到呢 上面的命令得到如下: "%ProgramFiles%\bhbsdrx.inf" "%ProgramFiles%\bjifays.inf " "%ProgramFiles%\jguiwef.inf" "%ProgramFiles%\meex.exe " "%ProgramFiles%\vmhrlbm.inf" "%ProgramFiles%\Yahoo! " "%ProgramFiles%\ah.bat " "%ProgramFiles%\ah.exe " "%ProgramFiles%\internet.exe" "%ProgramFiles%\SysInfo.wmp" "%ProgramFiles%\SysInfo.tmp" [ Last edited by YoDe on 2007-12-9 at 01:46 PM ]

作者: HAT     时间: 2007-12-9 13:46
是因为你的1.txt文件里面本身就有空格吧:)

作者: YoDe     时间: 2007-12-9 13:46
对 本身就有空格 [ Last edited by YoDe on 2007-12-9 at 01:48 PM ]

作者: YoDe     时间: 2007-12-9 13:47
谢谢4楼朋友 那符号的命令还不太清楚怎么用你能帮我解释一下下面代码吗: E: cd e:\网络游戏 dir/b >1.txt for /f "skip=1 delims=" %%a in (e:\网络游戏\1.txt) do set/p=%%a,<nul>>"C:\Documents and Settings\Administrator\桌面\排除删除.txt" for /f "delims==" %%a in (c:\我的音乐\1.txt) do (@echo "%%a" <<4.txt) OK 我要的就是for那一句 set/p=%%a,<nul>>这里到底是什么意思 一下字出现了我都不明白的符号 delims==跟delims=有多大区别

作者: HAT     时间: 2007-12-9 18:36
set命令使用/p开关时,会等待用户输入。 <nul表示从空设备产生一个输入来响应前面的命令。 >>表示把结果以追加的方式写入到文件"C:\Documents and Settings\Administrator\桌面\排除删除.txt"。 delims==表示使用等号作为列分隔符 delims=表示使用默认列分隔符(空格、制表符)

作者: YoDe     时间: 2007-12-9 19:11
三联病毒免疫中有如下批处理: FOR /F "tokens=1,2 delims==" %%i in ('dir virlist\*.dat /b') do ( Set listtxt=%%i) 我用不用等号等到的结果都一样? 其中virlist文件如下几个 diskvir.dat,regdef.dat,sysvir2K.dat tempvir.dat,等等 我得到的结果都是 <set listtxt=diskvir.dat> <set listtxt=regdef.dat> <set listtxt=sysvir2K.dat> <set listtxt=tempvir.dat> 我不加等号同样如此?为何 其中TOKENS=1 2似乎也没什么效果? [ Last edited by YoDe on 2007-12-9 at 07:13 PM ]

作者: HAT     时间: 2007-12-10 10:36
to: YoDe 因为'dir virlist\*.dat /b'命令的结果只有一列,所以: 1. 用不用等号作为列分隔符都一样,但是如果文件名里面有空格时,你就能看到区别了。 2. 只有tokens 1可以取到值,tokens 2 3 ...都为空。