Windows中是否有split
命令来拆分命令输出?我的命令是:
ipconfig | findstr /i "Default gateway" | findstr [0-9]
,输出为:
Default Gateway...: x.x.x.x
我需要一个命令,输出应该只有x.x.x.x
。
答案 0 :(得分:1)
在我的计算机上,有两个网关返回,一个用于IPv4,一个用于IPv6。 findstr
不区分它们。但是,对我来说IPv4是在IPv6之前返回的。此批处理文件从findstr
输出中提取网关的IP地址:
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "Default gateway"') do (
if not defined _ip set _ip=%%i
)
for /f "tokens=1 delims= " %%i in ("!_ip!") do (
set _ip=%%i
)
echo !_ip!
endlocal & set yourvar=%_ip%
我将其拆分为两个单独的for
命令(而不是嵌套for
命令),以便我可以抓住从findstr
返回的第一个“网关”。结果具有前导空格,因此第二个for
命令会删除前导空格。最后的& set yourvar=%_ip%
是您在local
块之外传递local
变量的方式,但您不必使用该变量...
答案 1 :(得分:1)
没有完全分割功能,但您可以使用FOR
来完成您想要的功能:
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "Default gateway" ^| findstr [0-9]') do echo %%i