답변:
cmd.exe 백틱을 사용하여 기본 명령 대체 기능을 제공하지만 for 고리 와 더불어 /f usebackq 선택권. 하지만 유닉스 셸이하는 일에 비해 꽤 뇌사 상태입니다. 표준 동작은 자식의 각 출력 행의 첫 번째 단어 만 가져 오는 것이므로 단지 반복 할 수 있으므로 붙여 넣기 만 할 수는 없습니다. 모두 명령 줄에 한 번에 (당신은 행동을 다소 조정할 수 있습니다. delims 옵션). 다음은 그 예입니다.
for /f usebackq %F in (`dir /w s*c`) do echo %F
정품 유닉스 스타일 명령 대체를 원한다면 정품 유닉스 쉘이 필요하다. 예를 들어, Cygwin bash 또는 내 자신의 (상업) 해밀턴 C 쉘 .
에코 출력 예 dir (따옴표는 사용하지 말고 작은 따옴표를 사용하십시오!) :
echo off & for /f "delims=" %A in ('dir') do echo %A
대화 형 모드에서 입력해야합니다. echo on 언론 들어가다 나가기 위해서. 루프가 한 번만 실행됩니다 (즉, ('xxx') 한 줄이면), 직접 추가 할 수 있습니다. echo on 명령에서.
echo off & for /f "delims=" %A in ('set /a 0x3DE1') do net helpmsg %A & echo on
알려지지 않은 이유로, ('set /a 0x3DE1') 같이 할 수 없다. 'set /a c=0x3DE1', 비록 set /a c=0x3DE1 단일 명령으로 작동합니다.
의 예 echo hello world ...에서 'echo hello world' (작은 따옴표) :
echo off & for /f "delims=" %A in ('echo hello world') do echo %A
의 예 echo hello world ...에서 "" (리터럴 문자열) :
echo off & for /f "delims=" %A in ("hello world") do echo %A
위의 구문 %A 대화 형 모드를 사용하려면 두 배가 필요합니다. % 배치 파일 (예 : %%A
너 한테 신경 써라. echo %A 루프 내부에서 명령의 출력에서 하나의 라인이 호출되면 상상해보십시오. on, 다음 두 가지 문제가 있습니다.
[1] echo $A 방법 echo on 아무것도 표시되지 않고 보이지 않게됩니다. 나는 단지 그것들을 on 그러한 특별한 경우를 다루는 것.
[2] echo $A 방법 echo on 명령 프롬프트 출력을 토글합니다. 여분을 추가해야 할 수도 있습니다. echo off 루프 내부. 예 :
echo off & for /f "delims=" %A in ('dir /b') do echo %A & echo off
위의 예제는 `` 줄 단위로 인수를 실행하기 때문입니다. 이 배치를 만들어 시뮬레이션을 시도 할 수 있습니다. echo `ls` (루프를 만들고 모든 줄을 공백으로 구분 된 단일 변수에 추가 한 다음 나중에 인수로 전달합니다).
@echo off
Setlocal EnableDelayedExpansion
set fls=
for /f "delims=" %%A in ('dir /b') do set fls=!fls! %%A
echo %fls%
- 편집 : 공백을 추가했습니다.