Windows 7에서 배치 파일을 통해 디렉토리 트리를 어떻게 삭제합니까?


36

배치 파일을 통해 Windows 7에서 지정된 폴더의 전체 내용을 삭제하고 싶습니다. 내 문제는 'del'또는 'erase'는 폴더가 아닌 파일 만 삭제하고 'rmdir'또는 'rd'는 항상 내용이있는 지정된 폴더를 삭제하지만 폴더 자체가 아닌 내용 만 삭제하고 싶습니다. . rmdir /S /Q "C:\Share\*"구문 오류가 발생한 ' ' 명령을 시도했습니다 .

이를 수행하는 올바른 방법은 무엇입니까?

Windows 7 Professional 64 비트에서 작업 중이며 관리자 권한이 있습니다.

답변:


36

배치 파일은 두 개의 명령을 실행해야합니다. 하나는 파일을 지우고 다른 하나는 하위 디렉토리를 제거합니다. 제거하려는 디렉토리가 있다고 가정했습니다.C:\Share\

배치 파일은 다음과 같아야합니다.

del /s /f /q c:\share\*.*
for /f %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f

del /s /f /q 확인 메시지를 표시하지 않고 모든 파일 (읽기 전용 파일)을 삭제하는 디렉토리 트리를 재귀 적으로 검색합니다.

두 번째 줄은 모든 하위 디렉토리 (이제 비어 있어야 함)를 반복하여 제거합니다.

전체 폴더를 삭제하고 다시 만드는 것 (권한으로 인해 원하지 않는 것 같습니까?)이 폴더를 정리하는 가장 쉬운 방법입니다.


여기서 "/ f %% f"-> "/ f % f"에 대해 약간의 수정을하면 제대로 작동합니다. 감사합니다.
Michael K

6
del필요가 없습니다. rd/s/q파일과 하위 폴더를 모두 삭제합니다.
grawity

1
@grawity는 del루트 폴더의 모든 파일에 주로 사용되며 재귀 스위치를 제거 할 수 있습니다.
Windos

5
@MichaelK, %% f는 배치 파일에 사용하기위한 것이고 % f는 명령 줄에 대한 단일 명령 일 경우를위한 것입니다.
Windos

1
하위 디렉토리 이름에 공백이 포함 된 경우 "delims ="를 추가하여 올바르게 처리 할 수 ​​있습니다 (/ f "delims =" %% f in ...) : stackoverflow.com/q/5553040/64918
goldPseudo

27
rmdir /s/q C:\Share

rmdir와일드 카드가 아닌 전체 이름 만 허용 하므로 "구문 오류"가 발생 합니다. ( cmd.exe에서 와일드 카드 확장은 개별 프로그램에 맡겨져 있지만 모두는 아닙니다.)

로 시작하는 디렉토리가 많은 경우 루프를 Share...사용하십시오 for.

for /d %f in (C:\Share*) do rmdir /s/q "%f"

3
공유 폴더를 삭제하고 싶지 않습니다.
Michael K

12

명령 프롬프트에서 다음을 시도하십시오.

rd /s/q "C:\Share"

2
이것은 폴더의 내용이 아닌 부모 폴더도 제거했습니다.
Teoman shipahi

2

이건 어떤가요 ?

rmdir /S /Q "target"
mkdir "target

편집 : 물론이 솔루션은 일시적인 폴더 부재를 견딜 수있는 경우에만 적용됩니다.


원본 폴더가 삭제됩니다.
Michael K

@MichaelK 내 작업은 일시적인 폴더 부재를 허용 할 수 있었으므로이 솔루션을 사용했습니다. 나는 그것이 for /f내 것과 비슷한 경우 보다 더 간단하고 읽기 쉽다고 생각했습니다 . 방금 공유하고 싶었습니다
Vasilly.Prokopyev

2
for /f "delims=" %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f

하위 디렉토리에 공백이 포함 된 다른 디렉토리가 포함 된 경우에는 작동하지 않습니다.

이 작업을 수행하려면 다음과 같이 최종 문자열을 인용해야했습니다.

/ f "delims ="%% f ( 'dir / ad / bc : \ share \')의 경우 rd / s / q "c : \ share \ %% f"

분명히 이것은 명령 자체가 문자열 자체 대신 인용 된 문자열에서 작동하게합니다.


0

모든 하위 폴더를 삭제해야하지만 루트 (및 루트의 파일)는 그대로 남아있는 폴더 에서이 작업을 시도합니다.

/ D는 디렉토리와 일치하고 rd / s / q는 한 번에 하나씩 삭제합니다.


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