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

[文件操作] [已解决]批处理如何修改配置文件中包含指定字符串的行?

以下是我要修改的文件,其中的红色部分是我要修改的地方
  1. SET EAS_HOME=
  2. SET JAVA_HOME=
  3. SET UPDATE_SERVER=121.14.3.12:6688
  4. SET EAS_SERVER=tcp://121.14.3.12:12033
  5. SET JVM_INITIAL_HEAPSIZE=64
  6. SET JVM_MAX_HEAPSIZE=256
  7. SET ONDEMAND_UPDATE=true
  8. SET ISSTART_LOADER=false
  9. SET ISMULTI_LOADER=false
复制代码
这个是启动程序的配置文件,另一个批处理启动程序时读取这个配置文件,我现在想要实现的功能是当我读取到
  1. SET EAS_SERVER=tcp://121.14.3.12:12033
复制代码
这一行时,判断这一行去掉后6个字符后是否等于EAS_SERVER=tcp://121.14.3.12,如果是的话将其修改为
SET EAS_SERVER=tcp://156.14.32.19:8081(注:只修改红色部分)并将其写回到配置文件中,现在不清楚如何才
能在不影响其他行内容的情况下修改我想要修改的这一行内容,望各位高手指教。

[ 本帖最后由 hxf0759 于 2009-6-23 14:53 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

回复 1楼 的帖子

假如你的配置文件名字为a.txt
代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. (
  3. for /f "delims=" %%i in ('type a.txt') do (
  4.     set str=%%i
  5.     for /f "tokens=1,2,3 delims=:" %%a in ("!str!") do (
  6.         if "%%c" neq "" set str=!str:%%b=//156.14.32.19!&set str=!str:%%c=8081!
  7. )
  8. echo !str!
  9. )
  10. )>b.txt
  11. del /q a.txt&ren b.txt a.txt&start a.txt
复制代码
(*^_^*)

TOP

回复 2楼 的帖子

感谢keen的回答,确实实现了功能
但是里面有一行代码我看不懂
  1. set str=!str:%%b=//156.14.32.19!&set str=!str:%%c=8081!
复制代码
望指教这行代码的意思

TOP

  1. sed -i "s/EAS_SERVER=tcp:\/\/121\.14\.3\.12....../EAS_SERVER=tcp:\/\/156\.14\.32\.19:8081/" a.txt
复制代码
第三方命令行工具 sed.exe 下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3楼 的帖子

set str=!str:%%b=//156.14.32.19!&set str=!str:%%c=8081!


这句的意思就是替换//121.14.3.12为//156.14.32.19,替换12033为8081。%%b代表的就是//121.14.3.12,%%c代表的就是12033。
(*^_^*)

TOP

回复 5楼 的帖子

多谢keen的帮助!

TOP

回复 6楼 的帖子

问题解决后,请给标题前面主动添加【已解决】。谢谢!
(*^_^*)

TOP

返回列表