![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 15:31 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求助 批处理 |
| 可打印版本 902 / 10 |
| 第1楼 ynygu | 发表于 2007-04-30 08:03 |
| 初级用户 发帖 20 积分 48 | |
|
求助 批处理 想用批处理查找指定文本里的内容进行修改(修改的内容自己输入的)
比如一个文本文件里: title timeout fallback password=123456 想把“PASSWORD=”后的“123456”替换 echo 请输入您想要的内容,并回车 set/p password= 修改为: 请各位大侠帮帮忙。 我不会用批处理来找PASSWORD后的文本。 ![]() |
|
| 第2楼 lxmxn | 发表于 2007-04-30 09:09 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re ynygu:
你可以试试for来读取文件内容,然后用if语句来判断当前的句子是不是“password=”这一句,再来根据情况来修改你的文本。 |
|
| 第3楼 ccwan | 发表于 2007-04-30 21:17 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
提取“PASSWORD=”后的的内容可以这样:
for /f "tokens=2 delims==" %%i in (*.*) do *** |
|
| 第4楼 ynygu | 发表于 2007-05-08 20:00 |
| 初级用户 发帖 20 积分 48 | |
|
lxmxn你好
还请你帮我写出批处理 因没学过批处理不会编写。请你辛苦下写出来 我翻翻书还能看懂点 |
|
| 第5楼 lxmxn | 发表于 2007-05-08 23:31 |
| 版主 发帖 4,938 积分 11,386 | |
|
可能这样的要求对于你来说有点困难,就把代码发出来给你参考参考。
|
|
| 第6楼 ynygu | 发表于 2007-05-13 18:02 |
| 初级用户 发帖 20 积分 48 | |
|
谢谢 lxmxn 的体谅。
但是如果里面有2个PASSWORD的话它就会出现修改2次密码 有没有办法把所有的PASSWORD都改了? |
|
| 第7楼 lxmxn | 发表于 2007-05-13 18:52 |
| 版主 发帖 4,938 积分 11,386 | |
|
推荐你用sed 注意: 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 ] |
|
| 第8楼 bhsx | 发表于 2007-05-15 03:06 |
| 初级用户 发帖 21 积分 43 | |
|
请教lxmxn
echo %%b|find "password" >nul 2>&1 &1是什么意思?? echo\%%b>>_new.txt 与echo %%b>>_new.txt有不同吗?? |
|
| 第9楼 lxmxn | 发表于 2007-05-15 11:44 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re bhsx:
关于2>&1,你可以看看ntcmds.chm里面关于重定向和句柄的相关内容。 echo\%%b和echo %%b的作用差不多,不过有细微的区别。当%%b为空时,echo %%b命令会报echo的状态,也就是命令行回显是否打开,而echo\%%b会输出一个空行。 |
|
| 第10楼 ynygu | 发表于 2007-05-15 16:58 |
| 初级用户 发帖 20 积分 48 | |
|
谢谢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 |
|
| 第11楼 ynygu | 发表于 2007-05-15 16:59 |
| 初级用户 发帖 20 积分 48 | |
|
请lxmxn再给与指点。(能不能优化)
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |