找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29180|回复: 11

[文本处理] BAT如何将当前本地连接IP地址输出替换.ini文件的某一行?

[复制链接]
发表于 2013-9-13 10:12:55 | 显示全部楼层 |阅读模式
请教各位高手,如何将.ini文件中“HOST=”后面的“192.168.1.6”,替换为“HOST=我当前机器本地连接的IP地址”

[Hosts]
Host=192.168.1.6
Standby=192.168.1.7
发表于 2013-9-13 10:22:31 | 显示全部楼层
你的静态IP地址是什么?花多少钱买的?
 楼主| 发表于 2013-9-13 10:27:41 | 显示全部楼层
本帖最后由 花开花落 于 2013-9-13 10:37 编辑

回复 2# DAIC


    就是我机器当前的IP地址,IPV4的那个
发表于 2013-9-13 10:38:35 | 显示全部楼层
回复 3# 花开花落


Win7系统吗?
把 ipconfig /all 的结果贴出来看看
 楼主| 发表于 2013-9-13 10:50:17 | 显示全部楼层
回复 4# DAIC


    我是要用在XP系统上的,Win7也可以的话最好
发表于 2013-9-13 12:56:48 | 显示全部楼层
回复 5# 花开花落


    请看4楼第2行
 楼主| 发表于 2013-9-13 17:19:42 | 显示全部楼层
本帖最后由 花开花落 于 2013-9-13 17:22 编辑

Windows IP Configuration



        Host Name . . . . . . . . . . . . : IHGIV-07231520

        Primary Dns Suffix  . . . . . . . : test.com

        Node Type . . . . . . . . . . . . : Unknown

        IP Routing Enabled. . . . . . . . : No

        WINS Proxy Enabled. . . . . . . . : No

        DNS Suffix Search List. . . . . . : test.com



Ethernet adapter 本地连接:



        Connection-specific DNS Suffix  . :

        Description . . . . . . . . . . . : NVIDIA nForce 10/100 Mbps Ethernet

        Physical Address. . . . . . . . . : 00-1F-D0-DE-CB-F9

        Dhcp Enabled. . . . . . . . . . . : No

        IP Address. . . . . . . . . . . . : 192.168.1.202

        Subnet Mask . . . . . . . . . . . : 255.255.255.0

        Default Gateway . . . . . . . . . : 192.168.1.1

        DNS Servers . . . . . . . . . . . : 192.168.1.1



PPP adapter Aventail VPN Connection:



        Connection-specific DNS Suffix  . : test.com

        Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface

        Physical Address. . . . . . . . . : 00-53-45-00-00-00

        Dhcp Enabled. . . . . . . . . . . : No

        IP Address. . . . . . . . . . . . : 2.0.50.230

        Subnet Mask . . . . . . . . . . . : 255.255.255.255

        Default Gateway . . . . . . . . . :

        DNS Servers . . . . . . . . . . . : 202.106.0.20

                                            8.8.8.8


这个是XP的,我只想去本地连接的IP地址:192.168.1.202 ,其它的都不要
发表于 2013-9-13 18:58:15 | 显示全部楼层
本帖最后由 batman 于 2013-9-13 19:05 编辑

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('ipconfig /all') do (
  3.   set "str=%%a"
  4.   if defined flag if "!str:IP Address=!" neq "!str!" set "ip=!str:*:=!"&goto next
  5.   if "!str:本地连接=!" neq "!str!" set "flag=a"
  6. )
  7. :next
  8. (for /f "delims=" %%a in (a.ini) do (
  9.   set "str=%%a"
  10.   if "!str:~,5!" equ "Host=" (
  11.     echo,Host=%ip:~1%
  12.     ) else (
  13.     echo,%%a
  14.   )
  15. ))>$
  16. move $ a.ini&start a.ini
复制代码
 楼主| 发表于 2013-9-15 00:08:00 | 显示全部楼层
本帖最后由 花开花落 于 2013-9-15 00:24 编辑

回复 8# batman


    好强!学习了~~~不过文件中的空行都没有了,下面是文件内容,如果我想保留空行要怎么写呢?另外如果我想把“addr=192.168.1.6”这一行也一起改了,要怎么写?
  1. [directory]
  2. datadir=d:\trace\data
  3. backdir=d:\trace\back

  4. [system]
  5. oilgunno=088
  6. StationID=
  7. SaleNo=

  8. [ICPreSell]
  9. addr=192.168.1.6
  10. port=1235

  11. [Hosts]
  12. Host=192.168.1.6
  13. Standby=192.168.1.7
复制代码
 楼主| 发表于 2013-9-15 00:10:37 | 显示全部楼层
回复 9# 花开花落


    我改了这个地方,结果每行前面都输出了一个行号,还是不对,求指点
    (for /f "delims=" %%a in ('findstr /n .* a.ini')
发表于 2013-9-15 10:16:30 | 显示全部楼层
回复 10# 花开花落
改一下batman的代码就是这样咯:

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('ipconfig /all') do (
  3.   set "str=%%a"
  4.   if defined flag if "!str:IP Address=!" neq "!str!" set "ip=!str:*:=!"&goto next
  5.   if "!str:本地连接=!" neq "!str!" set "flag=a"
  6. )
  7. :next
  8. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.ini') do (
  9.   set "str=%%b"
  10.   if /i "!str:~,5!"=="Host=" set "str=Host=%ip%"
  11.   if /i "!str:~,5!"=="addr=" set "str=addr=%ip%"
  12.   echo,!str!
  13. ))>$
  14. move /y $ a.ini&start a.ini
复制代码
不过,呵呵,获取IP地址和修改ini文件,我还是倾向于使用现成的函数,如au3里两行代码即可:

  1. IniWrite("a.ini","ICPreSell","addr",@IPAddress1)
  2. IniWrite("a.ini","Hosts","Host",@IPAddress1)
复制代码
 楼主| 发表于 2013-9-15 19:00:07 | 显示全部楼层
回复 11# weichenxiehou


    恩,OK了,不过最后这部分还是要这样写Host=%ip:~1%",不然前面会多一个空格,呵呵,非常感谢,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 17:19 , Processed in 0.029737 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表