명령 줄을 사용하여 Windows에서 폴더를 완전히 삭제 하나의 폴더를 삭제해야합니다.

내부에 다른 폴더와 파일이 들어있는 하나의 폴더를 삭제해야합니다. 시도 del하고 rmdir명령했지만 때로는 일부 오류 줄로 실패합니다.[PATH]: The directory isn't empty.

좋은 대안이 있습니까?



답변

이것은 자동 빌드 스크립트에서 많이 발생합니다.

그 이유는 “공유 삭제”를 사용하여 해당 디렉토리에 파일이 열려있는 일부 응용 프로그램 일 수 있습니다. 즉, 응용 프로그램은 파일 삭제를 허용하지만 (DeleteFile 호출이 실패하지 않는 이유는 해당 응용 프로그램이 핸들을 닫은 후에 만 ​​파일이 사라집니다.

즉, rmdir명령이 폴더를 삭제하려고 할 때 파일이 여전히있을 수 있으므로 오류 메시지가 표시됩니다. 그 후 곧, 응용 프로그램이 핸들을 닫고 파일이 사라지고 폴더를 검사 할 때 파일을 말하면 rmdir비어있을 것입니다.

적어도 그것은 내 이론이다.

Harry Johnston이 제안한 해결 방법이 좋습니다. rmdir명령 사이에 일시 중지 만 삽입 합니다. 물론 Windows에는 쉽게 스크립트 가능한 “일시 정지”명령이 없습니다 (수정 : 고대 Windows 버전은 최신 버전이 아닙니다. 주석 참조). 그러나 초 단위 입도가 충분 ping하면 일시 중지를 만드는 데 사용할 수 있습니다 .

ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul

전체적으로 :

rd /s /q foo
:: retry once
if exist foo (
    :: clear errorlevel
    cmd /c
    :: pause
    ping -n 2 127.0.0.1 >nul
    :: retry
    rd /s /q foo
)
:: retry yet again
if exist foo (
    cmd /c
    ping -n 2 127.0.0.1 >nul
    rd /s /q foo
)
:: give up
if exist foo {panic}


답변

시험:

rmdir /S your_directory

또는:

rmdir /S /Q your_directory

확인 메시지를 건너 뛰려면


답변

읽기 전용 파일이있을 수 있습니다. del / F 옵션을 사용하여 파일을 제거 할 수 있습니다

     del /S /F your_directory
     rmdir your_directory

숨겨진 파일이있을 수도 있으며 정말로 삭제하려는 경우 다음을 사용 하여이 작업을 수행 할 수 있습니다

     del /S /F /AH your_directory
     rmdir your_directory

그래도 실패하면 일부 파일을 삭제할 수있는 권한이 없거나 일부 파일이 여전히 사용 중입니다.


답변

Windows 7 (및 다른 버전)에는 때때로이 증상을 일으키는 버그가 있다고 생각합니다. 또는 타사 소프트웨어의 버그 일 수 있습니다. (아마도 Symantec Endpoint Protection을 설치 했습니까?)

어쨌든, 나는 그것을 꽤 자주 가로 질러 갔다. 대부분의 경우이 문제는 rd /s /q두세 번 연속 으로 실행하면 해결할 수 있습니다 .

이것이 배치 파일에 있으면 다음과 같이 할 수 있습니다.

rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause


답변

사용 del후, 내부의 파일을 rmdir폴더를 제거 할 수 있습니다.

rmdir방법 을 사용하여 모든 파일을 제거 하려면 디렉토리 이름 앞에/S 스위치 사용하고 /Q삭제 프롬프트를 표시하지 마십시오 . 파일을 놓치지 않기 때문에 이것이 가장 좋은 방법입니다. / Q 스위치는 시스템 또는 숨김 파일 속성에 대해 경고하지 않으므로주의하십시오.


답변

노드 를 사용하는 경우 다음 과 같이 rimraf 종속성을 사용할 수 있습니다 .

설치를 실행하십시오 : npm install rimraf -g

폴더 삭제 : rimraf SourceFolder

이것은 오류가 발생했을 때 도움이되었습니다.

소스 파일 이름이 파일 시스템에서 지원하는 것보다 큽니다.


답변

윈도우 (DOS, 윈도우 95 / 98 / ME)의 이전 버전을 폴더 DELTREE에 동등 RM또는 RMDIR. 나는 DELTREEWindows 7 워크 스테이션에서 배치 파일로 잘 사용합니다.

Deletes a directory and all the subdirectories and files in it.

To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]

  /Y              Suppresses prompting to confirm you want to delete
                  the subdirectory.
  [drive:]path    Specifies the name of the directory you want to delete.

Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.