如何在Windows命令提示符下拆分命令输出?

时间:2013-06-25 05:44:01

标签: cmd

Windows中是否有split命令来拆分命令输出?我的命令是:

ipconfig | findstr /i "Default gateway" | findstr [0-9]

,输出为:

Default Gateway...: x.x.x.x

我需要一个命令,输出应该只有x.x.x.x

2 个答案:

答案 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