[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求教,批处理替换指定行的部分文本内容

写一个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

  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());
复制代码

TOP

本帖最后由 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
复制代码
慎用,会覆盖源文件,测试后再用。

TOP

  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. )
复制代码

TOP

回复 1# 花开花落
这样有个好处,可以选择。如果要配置第2或3个WSNADDR的值,可将代码第4行中的1换成2或3即可。

TOP

回复 3# qixiaobin0715


    谢谢,还想请问更新原有文件C:\Program Files\abc\config.ini怎么写呢?

TOP

回复 6# 花开花落
已修改

TOP

回复 7# qixiaobin0715


    学习了,多谢多谢

TOP

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

TOP

返回列表