中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理怎样实现修改配置文件最后行内容?
作者:
标题: 批处理怎样实现修改配置文件最后行内容? 上一主题 | 下一主题
qwertl
中级用户





积分 461
发帖 243
注册 2007-10-14
状态 离线
『楼 主』:  批处理怎样实现修改配置文件最后行内容?

有个conf.ini文件的最后几行是如下这样的格式:

......
IP 0=192.168.3.8
IP 1=192.168.0.2
IP 2=192.168.1.3


怎样用批处理仅修改最后一行的IP参数?
现要将最后行IP 2=192.168.1.3改成IP 2=192.168.2.8用批处理该怎样实现??

可否自动删最后一行?再 echo IP 2=192.168.2.8>>conf.ini

但批处理要怎样每次将最后一行删掉呢?

2009-12-14 10:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  


sed -i '$ s/.*/IP 2=192.168.2.8/g' conf.ini




2009-12-14 14:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qwertl
中级用户





积分 461
发帖 243
注册 2007-10-14
状态 离线
『第 3 楼』:  

@echo off
for /f "tokens=15 skip=1" %%i in ('ipconfig ^| find /i "ip address"') do set ip2=%%i
sed -i '$ s/.*/IP 2=%ip2%/g' c:\wd\config.ini
这样解决了修改末行的参数。

谢谢hat!现又碰到个难题了。

现有个配置文件cf.ini,要修改其中间一行的参数,想通过批理获取的ip附加到
HostRestrictions=12.13.2.16\/192.168.91.5这行后面,每次增加个新IP需用\/隔开。其它内容都不变。

配置文件内容格式如下,(HostRestrictions字符串在整个文件中两次存在此,HostRestrictionsAllow)
......
[Access filtering]
HostRestrictions=12.13.2.16\/192.168.91.5
HostRestrictionsAllow=1
......

[ Last edited by qwertl on 2009-12-15 at 20:22 ]

2009-12-15 20:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  Re 3楼


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




2009-12-15 21:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qwertl
中级用户





积分 461
发帖 243
注册 2007-10-14
状态 离线
『第 5 楼』:  

谢谢hat.

conf.ini文件的最后几行是如下这样的格式:

......
IP 0=192.168.3.8
IP 1=192.168.0.2
IP 2=192.168.1.3

怎样将conf.ini文件的最后一行的值192.168.1.3定义为一个变量值,然后与如下的语句获取的%ip2%对比
for /f "tokens=15 skip=1" %%i in ('ipconfig ^| find /i "ip address"') do set ip2=%%i
对比如果与%ip2%值相同则批处理结束,如果相比IP值不同则执行如下语句后结束:
sed -i '$ s/.*/IP 2=%ip2%/g' c:\app\conf.ini
net stop "servername"
ping 127.0.0.1 -n 50 >nul
net start "servername"
[ Last edited by qwertl on 2010-1-6 at 18:29 ]

2010-1-5 20:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qwertl
中级用户





积分 461
发帖 243
注册 2007-10-14
状态 离线
『第 6 楼』:  

人呢?去忙什么了??

2010-1-6 18:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: