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

[文本处理] 获取IP的批处理,WIN7不用能,XP却可以。

[复制链接]
发表于 2015-1-3 17:08:26 | 显示全部楼层 |阅读模式
怎么把下面的代码改为WIN7能用?现在只有XP下可以用。WIN7不行,好像是变量不对?谁能帮我改下?
  1. @echo off
  2. Rem ===========扩展本地环境变量延迟===================
  3. setlocal enabledelayedexpansion

  4. title 获取本机IP及做好映射盘 Powered by xfp
  5. Rem '/*=========初始化设置=============*/
  6. set "Space=        "
  7. set "IP_addr=%Space%IP Address. . . . . . . . . . . . " %'/*------IP地址格式,注意引号前的空格!*/%

  8. Rem ===========取IPconfig中的IP信息===================
  9. Rem ==如果有多个IP或网卡,本程序只取第一个,因为取得第一个IP后,变量IP_addr已经被修改==
  10. for /f " skip=13 tokens=1,2 delims=:" %%i  in ('ipconfig /all') do (
  11.     for %%a in ( IP_addr) do (
  12.       if "%%i"=="!%%a!" (
  13.       set %%a=%%j
  14.       goto ok
  15.         )
  16.    )   
  17. )
  18. :ok
  19. Rem '/*===========结果输出===============*/
  20. echo 你的IP地址为:%IP_addr%

  21. Rem ======获取IP地址中第三、四位作为变量映射,如IP 192.168.1.100即得到1和100,第三位需多个不同网段才用到,先写下来吧===
  22. set "Room="
  23. set "ID="
  24. for /f "tokens=3,4 delims=." %%i in ("%IP_addr%") do (
  25. set "Room=%%i"
  26. set "ID=%%j"
  27. echo 网段号是:!Room!
  28. echo 当前IP号是:!ID!
  29. )
复制代码
发表于 2015-1-3 17:45:27 | 显示全部楼层
本帖最后由 tmplinshi 于 2015-1-3 19:37 编辑

是因为 WIN7 里面的 ipconfig /all 命令输出的结果与 XP 不一样。
你贴的代码是判断有没有“        IP Address. . . . . . . . . . . . ”,你可以自己看一下 ipconfig /all 的输出结果,然后进行修改。
下面的代码 WIN7 测试有效(应该也适用XP):
  1. @echo off
  2. Rem ===========扩展本地环境变量延迟===================
  3. setlocal enabledelayedexpansion

  4. title 获取本机IP及做好映射盘 Powered by xfp
  5. Rem '/*=========初始化设置=============*/
  6. set IP_addr="   IPv4 Address. . . . . . . . . . . " "        IP Address. . . . . . . . . . . . "

  7. chcp 437 >nul

  8. Rem ===========取IPconfig中的IP信息===================
  9. Rem ==如果有多个IP或网卡,本程序只取第一个,因为取得第一个IP后,变量IP_addr已经被修改==
  10. for /f " skip=13 tokens=1,2 delims=:" %%i  in ('ipconfig /all') do (
  11.      for %%a in (%IP_addr%) do (
  12.        if "%%i"=="%%~a" (
  13.        set IP_addr=%%j
  14.        goto ok
  15.          )
  16.     )   
  17. )
  18. :ok
  19. Rem '/*===========结果输出===============*/
  20. GRAFTABL 936 >nul
  21. for /f "delims=(" %%a in ("%IP_addr%") do set IP_addr=%%a
  22. echo 你的IP地址为:%IP_addr%

  23. Rem ======获取IP地址中第三、四位作为变量映射,如IP 192.168.1.100即得到1和100,第三位需多个不同网段才用到,先写下来吧===
  24. set "Room="
  25. set "ID="
  26. for /f "tokens=3,4 delims=." %%i in ("%IP_addr%") do (
  27. set "Room=%%i"
  28. set "ID=%%j"
  29. echo 网段号是:!Room!
  30. echo 当前IP号是:!ID!
  31. )

  32. pause
复制代码
发表于 2015-1-3 18:42:54 | 显示全部楼层
本帖最后由 tmplinshi 于 2015-1-3 19:18 编辑

这样写简单一点:
  1. @echo off

  2. call :GetIPAddress ip 网段号 IP号
  3. echo %ip% --- %网段号% --- %IP号%
  4. pause & exit

  5. :GetIPAddress [IP地址] [网段号] [IP号]
  6.     for /f "delims=:( tokens=2" %%i in (
  7.         ' ipconfig /all ^| findstr /rc:"IP[v4]* Address" /rc:"IP[v4]* 地址" '
  8.     ) do (
  9.         for /f "tokens=1-4 delims=. " %%a in ("%%i") do (
  10.             set "%~1=%%a.%%b.%%c.%%d"
  11.             set "%~2=%%c"
  12.             set "%~3=%%d"
  13.         ) 2>nul
  14.         goto :eof
  15.     )
  16. goto :eof
复制代码
发表于 2015-1-4 11:04:22 | 显示全部楼层
获取单个网卡的IP V4地址 By Yu2n
测试 Win7x64, XPSP3x86 下可用 ...
  1. @echo off
  2. for /f tokens^=1^,2^ delims^=^"^" %%a in ('wmic nicconfig get IPAddress /value ^| findstr /i "IPAddress=[^]"') do (set "ip=%%b")
  3. echo, ^^_^^ IPAddress^: %ip%
  4. pause
复制代码
结果如下:
  1. ^_^ IPAddress: 192.168.56.1
  2. 请按任意键继续. . .
复制代码

评分

参与人数 1技术 +1 收起 理由
tmplinshi + 1 比 ipconfig 方便多了

查看全部评分

发表于 2015-1-4 11:17:17 | 显示全部楼层
获取所有网卡的所有IP:
  1. wmic nicconfig get IPAddress /value | findstr /i "IPAddress=[^]"
复制代码
结果如下:
  1. IPAddress={"192.168.199.200","fe80::fdb3:41a6:e649:2f06"}
  2. IPAddress={"192.168.56.1","fe80::8daa:6931:5ddf:90bd"}
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 08:53 , Processed in 0.019071 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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