[windows] 배치 스크립트에서 rmdir 명령을 실행할 때 “디렉토리가 비어 있지 않습니다”오류를 해결하는 방법은 무엇입니까?

배치 스크립트를 만들고 있으며 스크립트의 일부가 디렉토리와 모든 하위 디렉토리를 제거하려고합니다. 비어 있지 않은 하위 디렉토리에 대한 간헐적 인 오류가 발생합니다. 색인 생성이 범인이라는 기사를 읽었습니다. WSearch를 비활성화했지만 결국 다시 오류가 발생했습니다. 다음은 명령입니다.

rmdir /S /Q "C:\<dir>\"



답변

나는 Harry Johnston이 언급 한 것과 동일한 문제를 경험했습니다. 당신을 위해 비우기 위해 의도 rmdir /s /q되었지만 디렉토리가 비어 있지 않다고 불평 /s합니다! 개인적으로 Windows의 버그라고 생각합니다.

내 해결 방법은 del디렉토리 자체를 삭제하기 전에 디렉토리의 모든 것입니다.

del /f /s /q mydir 1>nul
rmdir /s /q mydir

( 그렇지 않으면 삭제하는 모든 단일 파일을 나열하기 때문에 1>nul의 표준 출력을 숨 깁니다 del.)


답변

이 문제에 대해 잘 알고 있습니다. 가장 간단한 해결 방법은 작업을 조건부로 반복하는 것입니다. 나는 그것이 실제로 열린 파일이나 권한 문제가 아니라면 두 번 연속으로 실패하는 것을 본 적이 없습니다!

rd /s /q c:\deleteme
if exist c:\deleteme rd /s /q c:\deleteme


답변

방금 동일한 문제가 발생했으며 일부 파일이 손실되거나 손상되었습니다. 문제를 해결하려면 디스크 검사를 실행하십시오.

chkdsk /F e:

검색 창 상자 또는 cmd 프롬프트에서 실행할 수 있습니다. 는 /F이 파일을 복구처럼 찾아 문제를 해결합니다. 이 실행이 완료되면 평소처럼 파일과 폴더를 삭제할 수 있습니다.


답변

관리자로 명령 프롬프트를 입력하고 실행하십시오.

rmdir /s <FOLDER>


답변

비슷한 문제가 발생하여 Windows 탐색기를 통해 빈 폴더를 삭제하려고했습니다. 비어 있지 않은 오류를 표시했기 때문에 admin cmd를 통해 시도했지만 여기에 대한 답변이 도움이되지 않았습니다.

파일을 빈 폴더로 옮긴 후. 비어 있지 않은 폴더를 삭제할 수있었습니다


답변

@gfullam이 @BoffinbraiN의 답변에 대한 주석에서 언급했듯이 <dir>삭제중인 파일이 파일을 포함하는 파일이 아닐 수 있습니다 <dir>. “디렉토리가 비어 있지 않습니다.”라는 메시지를받는 하위 디렉토리가있을 수 있으며 유일한 해결책은 다음과 같습니다. 디렉토리를 재귀 적으로 반복하고 포함 된 모든 파일을 수동으로 삭제합니다. 결국 rmUNIX 의 포트를 사용하기로 결정했습니다 . rm.exeGit Bash, MinGW, Cygwin, GnuWin32 등이 함께 제공됩니다. PATH에 상위 디렉토리가 있고 UNIX 시스템에서와 같이 실행하기 만하면됩니다.

배치 스크립트 예 :

set PATH=C:\cygwin64\bin;%PATH%
rm -rf "C:\<dir>"


답변

나를 위해 일한 것은 다음과 같습니다. RMDir 명령이 거의 항상 “디렉토리가 비어 있지 않습니다”를 실행하는 것처럼 보입니다.

:Cleanup_Temporary_Files_and_Folders

Erase /F /S /Q C:\MyDir

RMDir /S /Q C:\MyDir
If  Exist  C:\MyDir  GoTo Cleanup_Temporary_Files_and_Folders