명령 출력을 분할하기 위해 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
해야한다.
정확하게 분할 기능이없는 ... 당신이 local
블록의 local
변수 외부를 통과,하지만 당신은 그것을 사용하지 않는 방법입니다,하지만 당신은 무엇을 달성하기 위해 FOR
을 사용할 수 있습니다 원하는 :
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "Default gateway" ^| findstr [0-9]') do echo %%i
내 컴퓨터에는 IPv4 용과 IPv6 용으로 두 개의 게이트웨이가 있습니다. findstr
은 이들을 구분하지 않습니다. 그러나 나를 위해 IPv6 전에 IPv4가 반환됩니다. 이 배치 파일은 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%
는
스크립트 대신 명령 (한 줄에)이 필요합니다. 그게 내게 더 도움이 될 것입니다 –
정말 이처럼 한 줄 명령을 원해요. 고맙습니다. 그러나 cmd 프롬프트에서 이것을 실행하면 "%% 나는이 시간에 예기치 않게"라고 말합니다 –
오류가 수정되었습니다. %% i 대신 % i을 사용해야합니다. 이것은 내 문제를 해결합니다. 고맙습니다. –
배치에서 '%% i'를 사용하지만 간섭 모드에서 '% i'을 사용하십시오 –