[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样修改文件中指定位置处的值?

目的:
就是在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呢?本机的。

  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
复制代码

TOP

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

回复 2# find


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

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

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

并且关于network部分的动态问题没有解决,可否再行修改一二呢?

TOP

TOP

回复 3# hacker85


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

ipconfig /all 可以得到本机IP地址。

TOP

回复 5# apang


    加了/i参数也不行,还是多行。

TOP

  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
复制代码

TOP

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

TOP

回复 8# hacker85


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

TOP

回复 9# find


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

TOP

返回列表