Windows 中是否有split
用于拆分命令输出的命令?我的命令是:
ipconfig | findstr /i "Default gateway" | findstr [0-9]
输出是:
Default Gateway...: x.x.x.x
我需要一个命令,输出应该只有x.x.x.x
.
Windows 中是否有split
用于拆分命令输出的命令?我的命令是:
ipconfig | findstr /i "Default gateway" | findstr [0-9]
输出是:
Default Gateway...: x.x.x.x
我需要一个命令,输出应该只有x.x.x.x
.
不完全是拆分功能,但您可以使用它FOR
来完成您想要的:
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "Default gateway" ^| findstr [0-9]') do echo %%i
在我的计算机上,返回了两个网关,一个用于 IPv4,一个用于 IPv6。findstr
不区分它们。但是,对我来说,IPv4 在 IPv6 之前返回。此批处理文件从输出中提取网关的 IP 地址findstr
:
@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