2013-06-25 3 views

답변

1

정확하게 분할 기능이없는 ... 당신이 local 블록의 local 변수 외부를 통과,하지만 당신은 그것을 사용하지 않는 방법입니다,하지만 당신은 무엇을 달성하기 위해 FOR을 사용할 수 있습니다 원하는 :

for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "Default gateway" ^| findstr [0-9]') do echo %%i 
+0

정말 이처럼 한 줄 명령을 원해요. 고맙습니다. 그러나 cmd 프롬프트에서 이것을 실행하면 "%% 나는이 시간에 예기치 않게"라고 말합니다 –

+0

오류가 수정되었습니다. %% i 대신 % i을 사용해야합니다. 이것은 내 문제를 해결합니다. 고맙습니다. –

+1

배치에서 '%% i'를 사용하지만 간섭 모드에서 '% i'을 사용하십시오 –

1

내 컴퓨터에는 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%

+0

스크립트 대신 명령 (한 줄에)이 필요합니다. 그게 내게 더 도움이 될 것입니다 –

관련 문제