Windows에서 파일 목록을 RMDIR로 파이프 할 수 있습니까?


9

특정 명령과 일치하는 모든 디렉토리를 삭제하기 위해 Windows 명령 프롬프트에 대한 배치 파일을 작성 중입니다.

먼저 DIR식과 일치하는 일반 디렉토리 목록을 반환하는 데 사용 하고 있습니다. 다음과 같이 각 출력 줄을 RMDIR 명령으로 파이프하고 싶습니다.

DIR *.delete /A:D /B /S | RMDIR /S /Q

그러나 위의 명령이 작동하지 않는 것 같습니다. 왜 이것이 작동하지 않으며 설명을 제공 할 수있는 사람에게 감사 할 것인지 완전히 이해하지 못합니다.

답변:


5

배치 파일에서 다음을 사용할 수 있습니다.

FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a

이것은 FOR명령을 사용하여 주어진 명령의 출력을 반복합니다 (이 경우 dir *.delete /A:D /B /S반환되는 각 항목마다 DO 문으로 지정된 명령이 실행 RMDIR /S /Q됩니다. 항목은 변수에 의해 참조됩니다) %%a.

단순히 DIR출력을 파이핑하는 것이 효과가없는 이유 RMDIR는 전체 출력 (여러 라인)을 모두 단일 매개 변수로 한 번에 보내기 때문 RMDIR입니다. 이 FOR명령은이 출력을 분류하고 각 항목을 반복 한 다음 RMDIR하나씩 전송합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.