楼 主
求助 批处理
发表于 2007-04-30 08:03 · 中国 上海 浦东新区 电信
初级用户
★
积分 48 发帖 20 注册 2007-04-28 02:04 UID 86716 性别 男
状态 离线
想用批处理查找指定文本里的内容进行修改(修改的内容自己输入的)
比如一个文本文件里:
title
timeout
fallback
password=123456
想把“PASSWORD=”后的“123456”替换
echo 请输入您想要的内容,并回车
set/p password= 修改为:
请各位大侠帮帮忙。
我不会用批处理来找PASSWORD后的文本。
第 2 楼
发表于 2007-04-30 09:09 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 UID 59080
状态 离线
Re ynygu:
你可以试试for来读取文件内容,然后用if语句来判断当前的句子是不是“password=”这一句,再来根据情况来修改你的文本。
第 3 楼
发表于 2007-04-30 21:17 · 中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725 发帖 1,160 注册 2006-09-23 12:00 UID 63486 来自 河北廊坊
状态 离线
提取“PASSWORD=”后的的内容可以这样:
for /f "tokens=2 delims==" %%i in (*.*) do ***
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
第 4 楼
发表于 2007-05-08 20:00 · 中国 上海 浦东新区 电信
初级用户
★
积分 48 发帖 20 注册 2007-04-28 02:04 UID 86716 性别 男
状态 离线
lxmxn你好
还请你帮我写出批处理
因没学过批处理不会编写。请你辛苦下写出来
我翻翻书还能看懂点
第 5 楼
发表于 2007-05-08 23:31 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 UID 59080
状态 离线
可能这样的要求对于你来说有点困难,就把代码发出来给你参考参考。
@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
第 6 楼
发表于 2007-05-13 18:02 · 中国 上海 浦东新区 电信
初级用户
★
积分 48 发帖 20 注册 2007-04-28 02:04 UID 86716 性别 男
状态 离线
谢谢 lxmxn 的体谅。
但是如果里面有2个PASSWORD的话它就会出现修改2次密码
有没有办法把所有的PASSWORD都改了?
第 7 楼
推荐你用sed
发表于 2007-05-13 18:52 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 UID 59080
状态 离线
@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 ]
第 8 楼
发表于 2007-05-15 03:06 · 中国 北京 海淀区 IDC机房
初级用户
★
积分 43 发帖 21 注册 2007-05-01 04:06 UID 87094 性别 男
状态 离线
请教lxmxn
echo %%b|find "password" >nul 2>&1
&1是什么意思??
echo\%%b>>_new.txt
与echo %%b>>_new.txt有不同吗??
第 9 楼
发表于 2007-05-15 11:44 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 UID 59080
状态 离线
Re bhsx:
关于2>&1,你可以看看ntcmds.chm里面关于重定向和句柄的相关内容。
echo\%%b和echo %%b的作用差不多,不过有细微的区别。当%%b为空时,echo %%b命令会报echo的状态,也就是命令行回显是否打开,而echo\%%b会输出一个空行。
第 10 楼
发表于 2007-05-15 16:58 · 中国 上海 浦东新区 电信
初级用户
★
积分 48 发帖 20 注册 2007-04-28 02:04 UID 86716 性别 男
状态 离线
谢谢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 楼
发表于 2007-05-15 16:59 · 中国 上海 浦东新区 电信
初级用户
★
积分 48 发帖 20 注册 2007-04-28 02:04 UID 86716 性别 男
状态 离线
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正