1

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

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

输出是:

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

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

4

2 回答 2

2

不完全是拆分功能,但您可以使用它FOR来完成您想要的:

for /f "tokens=2 delims=:" %%i  in ('ipconfig ^| findstr /i "Default gateway" ^| findstr [0-9]') do echo %%i
于 2013-06-25T06:38:03.953 回答
1

在我的计算机上,返回了两个网关,一个用于 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%传递一个变量,但你不必使用它......locallocal

于 2013-06-25T06:30:51.623 回答