Board logo

标题: [文件操作] 批处理怎样修改文件中指定位置处的值? [打印本页]

作者: hacker85    时间: 2012-3-11 17:28     标题: 批处理怎样修改文件中指定位置处的值?

目的:
就是在teknogods.ini文件中加入一行文字:
ExternalIP=外网IP

代码:
  1. @echo off
  2. cd J:\BAT\第三方程序
  3. down http://www.symental.com/ip/ ip
  4. for /f %%a in (ip) do set ip=%%a
  5. echo ExternalIP=%ip%>>P:\teknogods.ini
复制代码
teknogods.ini文件原来内容:
[Settings]
Name=hacker
FOV=65
ID=2C512CB3
[Network]
NetworkInterface=255
NetworkInterfaceList=[0 = 192.168.56.1; 1 = 192.168.1.101; 255 (default) = ANY IP]
这是文件的内容

期待效果:
[Settings]
Name=hacker
FOV=65
ID=2C512CB3
[Network]
NetworkInterface=255
NetworkInterfaceList=[0 = 192.168.56.1; 1 = 192.168.1.101; 255 (default) = ANY IP]
ExternalIP=外网IP

提示:
1、用上面的代码已经可以实现加入这个“ExternalIP=外网IP”信息了,但是……如果第一次运行这个P程序的时候是
完全没有错误的,但是当我们第二次运行这个程序的时候,就会发现在ini文件中有两个ExternalIP=外网IP,而
ini文件中只能有一个这样的信息存在。

2、NetworkInterfaceList=[0 = 192.168.56.1; 1 = 192.168.1.101; 255 (default) = ANY IP]
对于上面的红色标部分,很可能因为路由下面的设备较多,而不一定被分配到这个IP,所以这里如何实现自动获取IP呢?本机的。
作者: find    时间: 2012-3-11 17:43

  1. @echo off
  2. cd J:\BAT\第三方程序
  3. down http://www.symental.com/ip/ ip
  4. for /f %%a in (ip) do set ip=%%a
  5. findstr "^ExternalIP=" P:\teknogods.ini || echo ExternalIP=%ip%>>P:\teknogods.ini
复制代码

作者: hacker85    时间: 2012-3-11 17:56

本帖最后由 hacker85 于 2012-3-11 18:01 编辑

回复 2# find


    findstr "^ExternalIP=" P:\teknogods.ini || echo ExternalIP=%ip%>>P:\teknogods.ini

这个红色的字符在这里的意思是?

而且这段代码做出来的效果也是不对的,还是“运行一次程序就会多出一个ExternalIP”  
只允许有一个,也就是说从第一次运行过P程序后,就只是用其来更改等号后面的内容了。

并且关于network部分的动态问题没有解决,可否再行修改一二呢?
作者: find    时间: 2012-3-11 18:30

回复 3# hacker85


http://www.bathome.net/thread-24-1-1.html
作者: apang    时间: 2012-3-11 18:49

回复 3# hacker85


    ^表示一行的开头,findstr再加 /i 参数试试。

ipconfig /all 可以得到本机IP地址。
作者: hacker85    时间: 2012-3-11 20:53

回复 5# apang


    加了/i参数也不行,还是多行。
作者: terse    时间: 2012-3-11 23:18

  1. >~tem.te findstr /ivb "ExternalIP=" "teknogods.ini"
  2. for /f %%a in (ip) do >>tem.te echo ExternalIP=%%a
  3. move ~tem.te teknogods.ini
复制代码

作者: hacker85    时间: 2012-3-16 14:04

>~tem.te    ------->这个是什么呢?一个临时的中转文件?
那么它的前后语句都是哪些呢?还是说开头就这样写就可以?
代码一开头就来一个定向输入这个可以吗?我水平目前还不够,呵呵。
作者: find    时间: 2012-3-16 18:56

回复 8# hacker85


等同于:
  1. findstr /ivb "ExternalIP=" "teknogods.ini" >~tem.te
复制代码

作者: hacker85    时间: 2012-3-17 15:16

回复 9# find


    噢 ,原来是这样,谢谢。我回头会去测试代码 的。




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