Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在变量中存储IP地址-与windows版本无关_Windows_Batch File_Ip Address - Fatal编程技术网

在变量中存储IP地址-与windows版本无关

在变量中存储IP地址-与windows版本无关,windows,batch-file,ip-address,Windows,Batch File,Ip Address,我环顾四周,似乎找不到一个独立于内部windows版本的解决方案来获取批处理文件中计算机的ip地址。我想做的是,无论我在哪台windows机器上(无论它运行的是Win7还是XP,甚至可能是98),我都希望能够计算出ip地址,并以一种简单的方式将其存储到一个变量中 我可以使用ipconfig解析IPv4地址,但windows 7输出的内容与早期版本略有不同,因此我必须首先确定windows的版本,然后查找适当的字符串。任何帮助都会很好 XP Pro/Vista/7/8: 对于Windows XP和

我环顾四周,似乎找不到一个独立于内部windows版本的解决方案来获取批处理文件中计算机的ip地址。我想做的是,无论我在哪台windows机器上(无论它运行的是Win7还是XP,甚至可能是98),我都希望能够计算出ip地址,并以一种简单的方式将其存储到一个变量中

我可以使用ipconfig解析IPv4地址,但windows 7输出的内容与早期版本略有不同,因此我必须首先确定windows的版本,然后查找适当的字符串。任何帮助都会很好

XP Pro/Vista/7/8: 对于Windows XP和更新版本,我建议使用

98/2000/XP主页: 其他命令
netsh接口ip显示地址


nbtstat-n |查找“IpAddress:”

我想这样就可以了:

@echo off
FOR /F "tokens=2,3" %%A IN ('ping %computername% -n 1 -4') DO IF "from"== "%%A" set "IP=%%~B"
echo %IP:~0,-1%
使用GNU获得独立于Windows版本的真实internet IP
这适用于
windows 10

@echo off
for /f "skip=1 delims={}, " %%A in ('wmic nicconfig get ipaddress') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
for /f "tokens=1 delims=:" %%j in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    set localip=%%j
)
echo Public IP is: %IP%
echo Local  IP is: %localip:~11%

返回
public
private IP

您可能需要检测操作系统并对每个操作系统执行不同的操作。。。Windows没有grep,除非你想安装它的一个版本。我很害怕,因为我还没有找到我想要的解决方案。我看到了你发布的问题,并考虑这样做并获得windows版本,但我只是想看看是否有更简单的替代方案。我不这么认为。。您只需执行一次,就可以忘记它了,如果我需要IPv4地址的话。我刚刚尝试了这个,它给了我windows上的IPv6地址7@user972276,现在如何?我在Windows 7上尝试了此操作,它只打印“错误!没有连接到internet”。很抱歉,在这种情况下,您没有连接到
ident.me
。一些阿拉伯国家就是这样(我刚从web浏览器访问Identit.me,它给了我一个不正确的IP地址。因此我可以访问该网站。我希望我的解决方案不依赖于windows标准配置以外的任何东西。不过感谢您的帮助!
Identit.me
为您提供IP地址,internet可以从您那里看到。如果您使用代理或VPN,answer可能会有所不同。但对于网络来说,这是你真正的IP:)谢谢!我想我应该放弃一个适用于所有windows版本的解决方案。您应该能够在所有windows版本上使用
ipconfig
方法。注意我是如何搜索两个不同的字符串的(“IP”代表98,“IPv4”代表7)。我并没有检查所有版本的windows,但您可以添加尽可能多的搜索,只要有不同的字符串。但不幸的是,没有一个命令适用于所有遗留版本。
@echo off
FOR /F "tokens=2,3" %%A IN ('ping %computername% -n 1 -4') DO IF "from"== "%%A" set "IP=%%~B"
echo %IP:~0,-1%
@echo off&setlocal
for /f %%i in ('wget ident.me --output-document=- 2^>nul') do set "myRealIP=%%i"
if defined myRealIP (echo Your real IP is stored in %myRealIP%) else echo Error! No connection to the internet.
@echo off
for /f "skip=1 delims={}, " %%A in ('wmic nicconfig get ipaddress') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
for /f "tokens=1 delims=:" %%j in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    set localip=%%j
)
echo Public IP is: %IP%
echo Local  IP is: %localip:~11%