中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教如何批量修改TXT里的字符
作者:
标题: 请教如何批量修改TXT里的字符 上一主题 | 下一主题
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『楼 主』:  请教如何批量修改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")

2007-12-9 00:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  



  Quote:
我想用批处理给1.txt的文件每行加个两个冒号 该如何做
比如
”%ProgramFiles%\SysInfo.tmp“

汗一个……

加引号直接 echo “%%a”。

另外,你的几个for可以用一个for来代替。

2007-12-9 04:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 3 楼』:  

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

2007-12-9 13:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

斑竹,把<<的这个用法加到你那个帖子里吧:)

CMD/DOS下符号的作用参考
http://www.cn-dos.net/forum/viewthread.php?tid=30985&fpage=4



2007-12-9 13:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 5 楼』:  

谢谢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 ]

2007-12-9 13:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

是因为你的1.txt文件里面本身就有空格吧:)



2007-12-9 13:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 7 楼』:  

对 本身就有空格

[ Last edited by YoDe on 2007-12-9 at 01:48 PM ]

2007-12-9 13:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 8 楼』:  

谢谢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=有多大区别

2007-12-9 13:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:  

set命令使用/p开关时,会等待用户输入。
<nul表示从空设备产生一个输入来响应前面的命令。
>>表示把结果以追加的方式写入到文件"C:\Documents and Settings\Administrator\桌面\排除删除.txt"。

delims==表示使用等号作为列分隔符
delims=表示使用默认列分隔符(空格、制表符)



2007-12-9 18:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 10 楼』:  

三联病毒免疫中有如下批处理:
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 ]

2007-12-9 19:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 11 楼』:  

to: YoDe

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



2007-12-10 10:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: