명령 프롬프트에서 공통 접두사가 있는 여러 디렉터리 삭제

명령 프롬프트에서 공통 접두사가 있는 여러 디렉터리 삭제

동일한 디렉토리의 여러 하위 디렉토리를 삭제하고 싶습니다. 디렉토리 이름의 처음 세 문자는 "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로 바꾸고 실행할 수 있습니다.

관련 정보