中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: 求助 批处理 上一主题 | 下一主题
ynygu
初级用户





积分 48
发帖 20
注册 2007-4-28
状态 离线
『楼 主』:  求助 批处理

想用批处理查找指定文本里的内容进行修改(修改的内容自己输入的) 比如一个文本文件里: title timeout fallback password=123456 想把“PASSWORD=”后的“123456”替换 echo 请输入您想要的内容,并回车 set/p password= 修改为: 请各位大侠帮帮忙。 我不会用批处理来找PASSWORD后的文本。


2007-4-30 08:03
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




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

Re ynygu: 你可以试试for来读取文件内容,然后用if语句来判断当前的句子是不是“password=”这一句,再来根据情况来修改你的文本。


2007-4-30 09:09
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 3 楼』:  

提取“PASSWORD=”后的的内容可以这样: for /f "tokens=2 delims==" %%i in (*.*) do ***




三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
2007-4-30 21:17
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ynygu
初级用户





积分 48
发帖 20
注册 2007-4-28
状态 离线
『第 4 楼』:  

lxmxn你好 还请你帮我写出批处理 因没学过批处理不会编写。请你辛苦下写出来 我翻翻书还能看懂点


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




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

可能这样的要求对于你来说有点困难,就把代码发出来给你参考参考。
@echo off&Setlocal EnableDelayedExpansion
copy nul _new.txt >nul
for /f "tokens=1* delims=:" %%a in ('"findstr /n .* "a.txt""') do (
if not "%%b"=="" (echo %%b|find "password" >nul 2>&1 && set/p password=请输入密码:&&echo password=!password!>>_new.txt||echo\%%b>>_new.txt) else (echo\%%b>>_new.txt)
)
start _new.txt


2007-5-8 23:31
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ynygu
初级用户





积分 48
发帖 20
注册 2007-4-28
状态 离线
『第 6 楼』:  

谢谢 lxmxn 的体谅。 但是如果里面有2个PASSWORD的话它就会出现修改2次密码 有没有办法把所有的PASSWORD都改了?


2007-5-13 18:02
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  推荐你用sed

@echo off
set /p pwd=请输入你要设置的密码:
if not defined pwd goto :eof
sed "s/\(password=\).*$/\1%pwd%/" ufile
注意: ufile 为你要修改的文件名; sed 的下载地址: http://www.cn-dos.net/forum/viewthread.php?tid=30573&fpage=0&highlight=&page=2 17楼 这个可以替换你文件中所有的 “password=***” 为 “password=你的密码” 。 [ Last edited by lxmxn on 2007-5-13 at 07:01 PM ]


2007-5-13 18:52
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bhsx
初级用户





积分 43
发帖 21
注册 2007-5-1
状态 离线
『第 8 楼』:  

请教lxmxn echo %%b|find "password" >nul 2>&1 &1是什么意思?? echo\%%b>>_new.txt 与echo %%b>>_new.txt有不同吗??


2007-5-15 03:06
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




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

Re bhsx: 关于2>&1,你可以看看ntcmds.chm里面关于重定向和句柄的相关内容。 echo\%%b和echo %%b的作用差不多,不过有细微的区别。当%%b为空时,echo %%b命令会报echo的状态,也就是命令行回显是否打开,而echo\%%b会输出一个空行。


2007-5-15 11:44
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ynygu
初级用户





积分 48
发帖 20
注册 2007-4-28
状态 离线
『第 10 楼』:  

谢谢lxmxn的帮助。 问题已经解决,已经实现修改密码了。 @echo off attrib -h -r -s C:\boot\grub\menu.lst type C:\boot\grub\menu.lst>C:\boot\grub\a.txt title 修改密码 color fc mode con: cols=32 lines=6 @echo off&Setlocal EnableDelayedExpansion for /f "tokens=1* delims=:" %%a in ('"findstr /n .* "C:\boot\grub\a.txt""') do ( if not "%%b"=="" (echo %%b|find "password" >nul 2>&1 && set/p password=请输入新密码:&&echo password=!password!>>C:\boot\grub\menu.txt||echo\%%b>>C:\boot\grub\menu.txt) else (echo\%%b>>C:\boot\grub\menu.txt) ) type C:\boot\grub\menu.txt>C:\boot\grub\menu.lst attrib +h +r +s C:\boot\grub\menu.lst del C:\boot\grub\a.txt /f/s/q/a del C:\boot\grub\menu.txt /f/s/q/a


2007-5-15 16:58
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ynygu
初级用户





积分 48
发帖 20
注册 2007-4-28
状态 离线
『第 11 楼』:  

请lxmxn再给与指点。(能不能优化)


2007-5-15 16:59
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: