
동일한 디렉토리의 여러 하위 디렉토리를 삭제하고 싶습니다. 디렉토리 이름의 처음 세 문자는 "tmp"입니다. 이것은 작동하지 않습니다:
C:\Documents and Settings\rajesh\Local Settings\Temp> rmdir tmp*
답변1
이 rmdir
명령은 와일드카드를 허용하지 않습니다. for
동일한 목표를 달성하기 위해 약간의 루프를 사용할 수 있습니다 . 그러면 rmdir
주어진 패턴과 일치하는 각 파일/폴더에 대해 한 번씩 명령이 여러 번 실행됩니다 .
for /D %f in (tmp*) do rmdir "%f"
/S
폴더가 비어 있지 않고 해당 폴더로 재귀적으로 들어가도록 하려면 끝에 추가해야 합니다 .- 확인 체크를 방지하고 싶다면 추가해주세요
/Q
. - 각 줄에 대한 명령이 인쇄되는 것을 방지하려면
@
명령 앞에 추가하십시오. - %f 주위의 따옴표를 사용하면 공백이 있는 폴더를 삭제할 수 있습니다.
예를 들어, 이러한 모든 옵션을 사용하면 다음과 같은 이점이 있습니다.
for /D %f in (tmp*) do @rmdir "%f" /Q /S
전체 사용량을 보려면 를 입력하세요 rmdir /?
.
답변2
안전하고 일반적인 방법은 삭제하려는 디렉터리의 파일을 만든 dir /ad > blah
다음 파일에 원하는 내용이 있는지 확인한 다음 파일의 모든 줄을 에코하는 for 명령을 만드는 것입니다. for /f %a in (blah) do @echo %a
그런 다음 원하는 명령에 대해 수정하십시오. 예를 들어 이 줄은 파일의 각 줄의 시작 부분에 rmdir을 넣거나 for /f %a in (blah) do @echo rmdir %a
이미 있는 rmdir %a에 /q /s를 추가하기 위해 그 줄의 끝에 넣습니다. 즉 @echo rmdir %a /q를 사용합니다. /에스. 그런 다음 어떤 명령이 실행될지 확인되면 에코 부분을 제거하여for /f %a in (blah) do @rmdir %a /q /s
또 다른 방법은 삭제할 하위 디렉터리를 나열하는 파일을 만드는 시작 방법을 사용하는 것입니다. 따라서 파일의 각 줄을 수정하여 해당 하위 디렉터리를 삭제하는 명령을 읽을 수 있습니다. 그런 다음 파일에서 sed를 사용하여 하위 디렉토리 x를 rmdir x /q /s로 바꾸십시오.
그래서 blah라는 파일이 있다면. sed "s/.*/rmdir \0 \/q\/s/" blah >f
type f
모든 명령이 있는지 확인하세요. 각 하위 디렉터리를 삭제합니다. 만족스러우면 실행하고 싶다면 f의 이름을 f.bat로 바꾸고 실행할 수 있습니다.