繁体   English   中英

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

[英]How to split command output in Windows command prompt?

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

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

输出是:

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

我需要一个命令,输出应该只是xxxx

没有完全分割功能,但您可以使用FOR来完成您想要的任务:

for /f "tokens=2 delims=:" %%i  in ('ipconfig ^| findstr /i "Default gateway" ^| findstr [0-9]') do echo %%i

在我的计算机上,有两个网关返回,一个用于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返回的第一个'gateway'。 结果具有前导空格,因此第2个命令for删除前导空格。 & set yourvar=%_ip%到底是如何在local地块之外传递local变量,但是你不必使用它...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM