Board logo

标题: [文本处理] 求教,批处理替换指定行的部分文本内容 [打印本页]

作者: 花开花落    时间: 2021-5-19 17:12     标题: 求教,批处理替换指定行的部分文本内容

写一个bat,给C:\Program Files\abc\config.ini文件中第3行“WSNADDR=”后的内容赋值为://10.177.102.13:5070,//10.177.102.14:5070
也就是配置第一个“WSNADDR=”,请教高手怎么写

/*配置文件*/config.ini
[app1]
WSNADDR=//192.168.0.1:5070,//192.168.0.2:5070
[app2]
WSNADDR=//10.1.1.204:8000
[app3]
WSNADDR=//192.168.0.101:5080
作者: xp3000    时间: 2021-5-19 17:54

  1. //&@cd "C:\Program Files\abc"&cls&dir /a-d/b "config.ini"|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. function reStr(file){
  3.     var f = fso.opentextfile(file, 1);
  4.     str = f.ReadAll().replace(/^(\[app3\]\r\nWSNADDR=).*/mg, '$1//10.177.102.13:5070,//10.177.102.14:5070');
  5.     f.Close();
  6.     var f = fso.opentextfile(file, 2);
  7.     f.Write(str);
  8. }
  9. var fso = new ActiveXObject('Scripting.FileSystemObject');
  10. while(!WScript.StdIn.AtEndOfStream)reStr(WScript.StdIn.ReadLine());
复制代码

作者: qixiaobin0715    时间: 2021-5-19 22:04

本帖最后由 qixiaobin0715 于 2021-5-20 10:02 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "usebackq delims=" %%a in ("C:\Program Files\abc\config.ini") do (
  4.     if "!str!"=="[app1]" (
  5.         echo,WSNADDR=//10.177.102.13:5070,//10.177.102.14:5070
  6.     ) else (
  7.         echo,%%a
  8.     )
  9.     set str=%%a
  10. ))>a.temp
  11. move "a.temp" "C:\Program Files\abc\config.ini"
  12. pause
复制代码
慎用,会覆盖源文件,测试后再用。
作者: newswan    时间: 2021-5-19 22:25

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set r=0
  4. for /f "delims=" %%a in (config.ini) do (
  5.     set /a r+=1
  6.     if "!r!"=="2" (
  7.         echo WSNADDR=//10.177.102.13:5070,//10.177.102.14:5070
  8.     ) else (
  9.         echo %%a
  10.     )
  11. )
复制代码

作者: qixiaobin0715    时间: 2021-5-20 09:36

回复 1# 花开花落
这样有个好处,可以选择。如果要配置第2或3个WSNADDR的值,可将代码第4行中的1换成2或3即可。
作者: 花开花落    时间: 2021-5-20 09:54

回复 3# qixiaobin0715


    谢谢,还想请问更新原有文件C:\Program Files\abc\config.ini怎么写呢?
作者: qixiaobin0715    时间: 2021-5-20 10:03

回复 6# 花开花落
已修改
作者: 花开花落    时间: 2021-5-20 10:15

回复 7# qixiaobin0715


    学习了,多谢多谢
作者: xp3000    时间: 2021-5-20 12:41

看题没注意,修改的是app3行,把app3修改app1就行了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2