【发布时间】:2024-01-17 18:17:01
【问题描述】:
Windows 中是否有 split 命令来拆分命令输出?我的命令是:
ipconfig | findstr /i "Default gateway" | findstr [0-9]
输出是:
Default Gateway...: x.x.x.x
我需要一个命令,输出应该只有x.x.x.x。
【问题讨论】:
标签: cmd
Windows 中是否有 split 命令来拆分命令输出?我的命令是:
ipconfig | findstr /i "Default gateway" | findstr [0-9]
输出是:
Default Gateway...: x.x.x.x
我需要一个命令,输出应该只有x.x.x.x。
【问题讨论】:
标签: cmd
在我的计算机上,返回了两个网关,一个用于 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 变量的方式,但您不必使用它...
【讨论】:
不完全是拆分功能,但你可以使用FOR 来完成你想要的:
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "Default gateway" ^| findstr [0-9]') do echo %%i
【讨论】:
%%i,但在交互模式下使用%i