标题: [文本处理] [已解决]批处理如何替换文本中某一行的内容? [打印本页]
作者: hdxiaoni 时间: 2012-3-21 02:31 标题: [已解决]批处理如何替换文本中某一行的内容?
现有win.ini文件如下:
[pmsstartup.exe]
serverConfig=http://10.141.183.114:8080/config.pmssd.xml
http://10.141.183.115:8080/config.pmssd.xml
installPath=c:\program files\pms
installPath_1=e:\我的文档\桌面\新建文件夹
serverConfig_1=http://10.141.183.116:8080/config.pmssd.xml
[DMS]
runpath=C:\Program Files\PMS\bin
[山东电力集团公司PMS系统]
LastLogin=popo
pwd=+
想把“[山东电力集团公司PMS系统]”行下面的一行,替换为LastLogin=zl,请问用批处理如何做到?
注:该win.ini文件根据系统安装软件的不同,会发生变化,故不能用指定行序号来确定LastLogin这一行的位置。但其上一行是确定的名称,可通过找到“[山东电力集团公司PMS系统]”行找到该行。
LastLogin这一行记录的是最后一个登录的用户名,会随时发生变化,我想运行批处理后,改成我自己的用户名zl。
请教各位大神、大侠、大哥、大姐们,跪谢!
作者: hdxiaoni 时间: 2012-3-21 02:34
从8点学到现在,都没搞出来,看在这份上,高手给个答案吧
作者: CrLf 时间: 2012-3-21 05:13
- @echo off
- (for /f "delims=" %%a in (win.ini) do (
- if defined t (
- set t=
- echo LastLogin=zl
- )else echo;%%a
- if %%a==[山东电力集团公司PMS系统] set t=1
- ))>tmp.ini
复制代码
或者判断当前行是否为 LastLogin=xxx :- @echo off
- (for /f "delims=" %%a in (win.ini) do (
- for /f "delims==" %%b in ("%%a") do (
- if %%b==LastLogin (
- echo LastLogin=zl
- ) else echo;%%a
- )
- ))>tmp.ini
复制代码
如果要覆盖原文件,在脚本末尾加一句:复制代码
作者: find 时间: 2012-3-21 20:19
- sed -i "/\[山东电力集团公司PMS系统\]/{N; s/\n.*/\nLastLogin=zl/}" win.ini
复制代码
作者: hdxiaoni 时间: 2012-3-21 22:17
回复 3# CrLf
感谢版主大大,太好了,可以回去跟同事装一把了,呵呵。
作者: hdxiaoni 时间: 2012-3-21 22:17
回复 4# find
感谢你的回帖。谢谢。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |