Board logo

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

作者: hxf0759    时间: 2009-6-19 22:59     标题: [已解决]批处理如何修改配置文件中包含指定字符串的行?

以下是我要修改的文件,其中的红色部分是我要修改的地方
  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 编辑 ]
作者: keen    时间: 2009-6-20 13:15     标题: 回复 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
复制代码

作者: hxf0759    时间: 2009-6-20 18:29     标题: 回复 2楼 的帖子

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

  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
作者: keen    时间: 2009-6-20 22:00     标题: 回复 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。
作者: hxf0759    时间: 2009-6-22 15:39     标题: 回复 5楼 的帖子

多谢keen的帮助!
作者: keen    时间: 2009-6-22 17:35     标题: 回复 6楼 的帖子

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




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