Board logo

标题: [问题求助] [已解决]批处理中sed怎样实现配置文件的修改? [打印本页]

作者: qwertl    时间: 2009-12-15 21:09     标题: [已解决]批处理中sed怎样实现配置文件的修改?

现有个配置文件cf.ini,要修改其中间一行的参数,想通过批理获取的ip附加到
HostRestrictions=192.168.1.5\/12.13.2.16     IP间的\/开(不是字母V,是正反斜杆)。最新的IP是由
  1. for /f "tokens=15 skip=1" %%i in ('ipconfig ^| find /i "ip address"') do set ip2=%%i
复制代码
获取%ip2%的值。


配置文件内容格式如下,(HostRestrictions字符串在整个文件中两次存在此,HostRestrictionsAllow)
......
[Access filtering]
HostRestrictions=192.168.1.5\/12.13.2.16     要改成HostRestrictions=192.168.1.5\/56.123.22.28   
HostRestrictionsAllow=1
......
  1. rem sed -i "s/EAS_SERVER=tcp:\/\/121\.14\.3\.12....../EAS_SERVER=tcp:\/\/156\.14\.32\.19:8081/" a.txt
  2. sed -i "s/HostRestrictions=192\.168\.1\.5....../HostRestrictions=192\.168\.1\.5\\\/56\.123\.22\.28/" c:\bat\cf.ini
复制代码
运行提示:
The system cannot execute the specified program.,没更改成功

[ 本帖最后由 qwertl 于 2009-12-19 22:26 编辑 ]
作者: Batcher    时间: 2009-12-15 21:17

  1. set ip=192.168.0.1
  2. sed -i "s/\(HostRestrictions=.*\)/\1\\\/%ip%/g" cf.ini
复制代码

作者: qwertl    时间: 2009-12-15 21:32

谢谢!

这样是可以新IP附加上去,怎样用%IP%替换掉最后个IP值(12.13.2.16)而不是附加呢?

还有最后的cf.ini文件不能使用完整路径对吗?

[ 本帖最后由 qwertl 于 2009-12-15 21:41 编辑 ]
作者: Batcher    时间: 2009-12-15 22:55     标题: 回复 3楼 的帖子

  1. set ip=56.123.22.28
  2. sed -i "s/\(HostRestrictions=.*\\\/\).*/\1%ip%/g" cf.ini "C:\test\cf.ini"
复制代码

作者: qwertl    时间: 2009-12-16 09:57

谢谢!可以了。
作者: qwertl    时间: 2009-12-17 21:49

再请教下:
以下格式的配置文件cf.ini,怎样用下语句获得的ip=192.168.22.8值,替换掉cf。ini文件中IP 1=后的192.168.1.3。
for /f "tokens=15 skip=1" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i

cf.ini配置格式:
.....
Access Granted=No
IP 0=192.168.1.2
IP 1=192.168.1.3
IP 2=192.168.2.3
IP 3=192.168.6.3
.....
作者: Batcher    时间: 2009-12-18 00:46     标题: 回复 6楼 的帖子

  1. set ip=192.168.22.8
  2. sed -i "s/\(IP 1=\).*/\1%ip%/g" cf.ini
复制代码

作者: qwertl    时间: 2009-12-19 22:28

谢谢了!

sed功能真强!




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