![](/img/trans.png)
[英]How to assign the output value of a command to a variable in Windows command prompt?
[英]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.