标题: [文件操作] [已解决]批处理如何修改配置文件中包含指定字符串的行? [打印本页]
作者: hxf0759 时间: 2009-6-19 22:59 标题: [已解决]批处理如何修改配置文件中包含指定字符串的行?
以下是我要修改的文件,其中的红色部分是我要修改的地方- SET EAS_HOME=
- SET JAVA_HOME=
- SET UPDATE_SERVER=121.14.3.12:6688
- SET EAS_SERVER=tcp://121.14.3.12:12033
- SET JVM_INITIAL_HEAPSIZE=64
- SET JVM_MAX_HEAPSIZE=256
- SET ONDEMAND_UPDATE=true
- SET ISSTART_LOADER=false
- SET ISMULTI_LOADER=false
复制代码
这个是启动程序的配置文件,另一个批处理启动程序时读取这个配置文件,我现在想要实现的功能是当我读取到- 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
代码:- @echo off&setlocal enabledelayedexpansion
- (
- for /f "delims=" %%i in ('type a.txt') do (
- set str=%%i
- for /f "tokens=1,2,3 delims=:" %%a in ("!str!") do (
- if "%%c" neq "" set str=!str:%%b=//156.14.32.19!&set str=!str:%%c=8081!
- )
- echo !str!
- )
- )>b.txt
- del /q a.txt&ren b.txt a.txt&start a.txt
复制代码
作者: hxf0759 时间: 2009-6-20 18:29 标题: 回复 2楼 的帖子
感谢keen的回答,确实实现了功能
但是里面有一行代码我看不懂- set str=!str:%%b=//156.14.32.19!&set str=!str:%%c=8081!
复制代码
望指教这行代码的意思
作者: Batcher 时间: 2009-6-20 20:28
- 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 |