标题: [文本处理] 获取IP的批处理,WIN7不用能,XP却可以。 [打印本页]
作者: gxxk 时间: 2015-1-3 17:08 标题: 获取IP的批处理,WIN7不用能,XP却可以。
怎么把下面的代码改为WIN7能用?现在只有XP下可以用。WIN7不行,好像是变量不对?谁能帮我改下?- @echo off
- Rem ===========扩展本地环境变量延迟===================
- setlocal enabledelayedexpansion
-
- title 获取本机IP及做好映射盘 Powered by xfp
- Rem '/*=========初始化设置=============*/
- set "Space= "
- set "IP_addr=%Space%IP Address. . . . . . . . . . . . " %'/*------IP地址格式,注意引号前的空格!*/%
-
- Rem ===========取IPconfig中的IP信息===================
- Rem ==如果有多个IP或网卡,本程序只取第一个,因为取得第一个IP后,变量IP_addr已经被修改==
- for /f " skip=13 tokens=1,2 delims=:" %%i in ('ipconfig /all') do (
- for %%a in ( IP_addr) do (
- if "%%i"=="!%%a!" (
- set %%a=%%j
- goto ok
- )
- )
- )
- :ok
- Rem '/*===========结果输出===============*/
- echo 你的IP地址为:%IP_addr%
-
- Rem ======获取IP地址中第三、四位作为变量映射,如IP 192.168.1.100即得到1和100,第三位需多个不同网段才用到,先写下来吧===
- set "Room="
- set "ID="
- for /f "tokens=3,4 delims=." %%i in ("%IP_addr%") do (
- set "Room=%%i"
- set "ID=%%j"
- echo 网段号是:!Room!
- echo 当前IP号是:!ID!
- )
复制代码
作者: tmplinshi 时间: 2015-1-3 17:45
本帖最后由 tmplinshi 于 2015-1-3 19:37 编辑
是因为 WIN7 里面的 ipconfig /all 命令输出的结果与 XP 不一样。
你贴的代码是判断有没有“ IP Address. . . . . . . . . . . . ”,你可以自己看一下 ipconfig /all 的输出结果,然后进行修改。
下面的代码 WIN7 测试有效(应该也适用XP):- @echo off
- Rem ===========扩展本地环境变量延迟===================
- setlocal enabledelayedexpansion
-
- title 获取本机IP及做好映射盘 Powered by xfp
- Rem '/*=========初始化设置=============*/
- set IP_addr=" IPv4 Address. . . . . . . . . . . " " IP Address. . . . . . . . . . . . "
-
- chcp 437 >nul
-
- Rem ===========取IPconfig中的IP信息===================
- Rem ==如果有多个IP或网卡,本程序只取第一个,因为取得第一个IP后,变量IP_addr已经被修改==
- for /f " skip=13 tokens=1,2 delims=:" %%i in ('ipconfig /all') do (
- for %%a in (%IP_addr%) do (
- if "%%i"=="%%~a" (
- set IP_addr=%%j
- goto ok
- )
- )
- )
- :ok
- Rem '/*===========结果输出===============*/
- GRAFTABL 936 >nul
- for /f "delims=(" %%a in ("%IP_addr%") do set IP_addr=%%a
- echo 你的IP地址为:%IP_addr%
-
- Rem ======获取IP地址中第三、四位作为变量映射,如IP 192.168.1.100即得到1和100,第三位需多个不同网段才用到,先写下来吧===
- set "Room="
- set "ID="
- for /f "tokens=3,4 delims=." %%i in ("%IP_addr%") do (
- set "Room=%%i"
- set "ID=%%j"
- echo 网段号是:!Room!
- echo 当前IP号是:!ID!
- )
-
- pause
复制代码
作者: tmplinshi 时间: 2015-1-3 18:42
本帖最后由 tmplinshi 于 2015-1-3 19:18 编辑
这样写简单一点:- @echo off
-
- call :GetIPAddress ip 网段号 IP号
- echo %ip% --- %网段号% --- %IP号%
- pause & exit
-
- :GetIPAddress [IP地址] [网段号] [IP号]
- for /f "delims=:( tokens=2" %%i in (
- ' ipconfig /all ^| findstr /rc:"IP[v4]* Address" /rc:"IP[v4]* 地址" '
- ) do (
- for /f "tokens=1-4 delims=. " %%a in ("%%i") do (
- set "%~1=%%a.%%b.%%c.%%d"
- set "%~2=%%c"
- set "%~3=%%d"
- ) 2>nul
- goto :eof
- )
- goto :eof
复制代码
作者: yu2n 时间: 2015-1-4 11:04
获取单个网卡的IP V4地址 By Yu2n
测试 Win7x64, XPSP3x86 下可用 ...- @echo off
- for /f tokens^=1^,2^ delims^=^"^" %%a in ('wmic nicconfig get IPAddress /value ^| findstr /i "IPAddress=[^]"') do (set "ip=%%b")
- echo, ^^_^^ IPAddress^: %ip%
- pause
复制代码
结果如下:- ^_^ IPAddress: 192.168.56.1
- 请按任意键继续. . .
复制代码
作者: yu2n 时间: 2015-1-4 11:17
获取所有网卡的所有IP:- wmic nicconfig get IPAddress /value | findstr /i "IPAddress=[^]"
复制代码
结果如下:- IPAddress={"192.168.199.200","fe80::fdb3:41a6:e649:2f06"}
- IPAddress={"192.168.56.1","fe80::8daa:6931:5ddf:90bd"}
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |