"ipconfig"返回所有详细信息。但我只想要ipv4。
我也尝试过"ipconfig|find/I"ipv4"|clip",但它返回"ipv4地址…………..:XXX.XX.X"
我也不想要"IPv4地址…………:"。
我想要输出"xxx.xxx.x.x"而不是其他
是否有适用于Windows的cmd命令?
您可以尝试
for /f "tokens=2 delims=[]" %a in ('ping -n 1 -4 "%computername%"') do @echo %a
for /f
用于为从磁盘上的文件或命令或直接包含的字符串的输出中获得的每一行执行一些代码(do
子句之后的代码)。
在这种情况下,将使用第二个选项。for /f
将用于根据计算机名称运行ping
命令并处理其输出。在这个ping
命令的输出中,会有一行类似Pinging [xxx.xxx.xxx.xxx] with ....
的内容。这是我们想要用for
命令处理的行。通常需要某种find
命令来丢弃其余的行,只保留所需的一行,但在这种情况下,将不需要它。
delims
子句表示[]
将用作分隔符来分隔行。我们想要线路的第二部分,所以使用tokens=2
。
当for /f
处理ping
命令的输出时,每一行都被解析。唯一包含[]
的行是我们插入的行,因此,它是唯一将被拆分的行,也是唯一返回第二个令牌的行(其余行将只输出一个令牌,因为它们没有被拆分)。此令牌将存储在for
可替换参数%%a
中,然后返回到控制台。
接受的答案打印出了适合我情况的错误IP。我想要一个特定网络适配器的IP,只是IP,这样我就可以把它传递到一个变量中并使用它
我使用了类似于公认答案的方法来实现这一点,但在for循环中使用了netsh命令和findstr:
for /f "tokens=3 delims=: " %i in ('netsh interface ip show config name^="Ethernet" ^| findstr "IP Address"') do echo Your IP Address is: %i
我在这篇相关文章中解释了它的工作原理:https://stackoverflow.com/a/59004409/2684661
我希望这能帮助一些人得到他们需要的东西。