for 명령으로 파이프하는 방법 그래서 대신
C:\asd>ipconfig | findstr "Address" >a
C:\asd>for /f "tokens=15" %f in (a) do @echo %f
192.168.1.3
한 줄로 할 수 있기를 원합니다.
C:\asd>ipconfig | findstr "Address" | for /f "tokens=15" %f do @echo %f
do was unexpected at this time.
답변
문서화되어 있지는 않지만 FOR 명령 내의 명령으로 파이프 할 수 있습니다. 나는 이 예제 에서 처음으로 그것을 배웠습니다 .
SC query | FOR /F "tokens=2" %%i IN ('FIND /I "SERVICE_NAME"') DO @ECHO %%i
이 수정 된 코드 버전이 작동합니다.
C:\>ipconfig | for /f "tokens=14" %f in ('findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
이 응답 에서 설명한대로 FOR 명령 내에서 “more”를 사용 하여 임의 명령에서 파이프 된 입력을 구문 분석 할 수도 있습니다 .
C:\>ipconfig | findstr "Address" | for /f "tokens=14" %f in ('more') do @echo %f
192.168.x.x
192.168.y.y
답변
에 대한 문서를 보면 for
( for /?
보려고 실행 ) for /f
파이프에서 읽지 않을 것이라고 생각 합니다. 유효한 소스는 파일 세트, “문자열”및 ‘명령’입니다.
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
다음 for
과 같이 명령을 넣을 수 있습니다 .
for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
(그것을 지적 neurolysis 덕분이어야 ^|
단지가 아닌 |
)
또는 ipconfig | findstr "Address"
별도의 배치 스크립트를 넣고 다음을 호출 할 수 있습니다.
for /f "tokens=14" %f in ('ipaddresses') do @echo %f
(스크립트를 호출했다고 가정 ipaddresses
).
또는 다음 과 같이 for
작업을 수행하는 데 사용할 수 있습니다 findstr
.
for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j
192.168.x.x
192.168.y.y
IPv6 주소와 일치하지 않기 때문에 완전히 동일하지는 않지만 그 라인을 따라 뭔가 작동 할 수 있습니다.
또한로 변경 tokens=15
되었습니다 tokens=14
. 나는 라인의 마지막 필드가 토큰 14라고 생각합니다. 어쨌든 나를 위해 일하십시오.