Windows中是否有split
命令來分割命令輸出?我的命令是:如何在Windows命令提示符中分割命令輸出?
ipconfig | findstr /i "Default gateway" | findstr [0-9]
,輸出是:
Default Gateway...: x.x.x.x
我需要一個命令,輸出應該只有x.x.x.x
。
Windows中是否有split
命令來分割命令輸出?我的命令是:如何在Windows命令提示符中分割命令輸出?
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
變量之外,但你不必使用...
我需要一個命令(在一行中),而不是腳本。這對我更有幫助 –
真的,我想要這樣的單行命令。謝謝。但是,當我在cmd提示符下執行它時,它會顯示「%%,我此時意外」 –
我修正了錯誤。而不是%%我們需要使用%i。這解決了我的問題。非常感謝你。 –
批處理中使用'%% i',但在交互模式下使用'%i' –