배치-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>
@gfullam이 @BoffinbraiN의 답변에 대한 주석에서 언급했듯이 <dir>
삭제중인 파일이 파일을 포함하는 파일이 아닐 수 있습니다 <dir>
. "디렉토리가 비어 있지 않습니다."라는 메시지를받는 하위 디렉토리가있을 수 있으며 유일한 해결책은 다음과 같습니다. 디렉토리를 재귀 적으로 반복하고 포함 된 모든 파일을 수동으로 삭제합니다. 결국 rm
UNIX 의 포트를 사용하기로 결정했습니다 . rm.exe
Git 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
비슷한 문제가 발생하여 Windows 탐색기를 통해 빈 폴더를 삭제하려고했습니다. 비어 있지 않은 오류가 표시되었으므로 admin cmd를 통해 시도했지만 여기에 대한 답변이 도움이되지 않았습니다.
파일을 빈 폴더로 옮긴 후. 비어 있지 않은 폴더를 삭제할 수있었습니다
내 경우에는 폴더를 루트 디렉토리로 옮겼습니다.
move <source directory> c:\
그런 다음 명령을 실행하여 디렉토리를 제거하십시오.
rmdir c:\<moved directory> /s /q
나는 "C : \ Users \ User Name \ OneDrive \ Fonts"를 가지고 있는데, 이것은 "C : \ Windows \ Fonts"에 mklink (/ D)되어 있었고, 저도 같은 문제였습니다. 나의 경우에는
cd "C : \ Users \ 사용자 이름 \ OneDrive"
rd / s 글꼴
Y (동작 확인)
나를 도와 주었다. 나는 그것이 당신에게도 도움이되기를 바랍니다; D
Harry Johnston의 답변과 유사하게 작동 할 때까지 반복합니다.
set dirPath=C:\temp\mytest
:removedir
if exist "%dirPath%" (
rd /s /q "%dirPath%"
goto removedir
)
가능한 원인은 다음과 같습니다.
- 더 높은 권한이 필요한 파일 또는 하위 디렉토리가 있습니다.
- WSearch뿐만 아니라 바이러스 스캐너 또는 기타 다른 파일이 사용중인 파일이 있습니다.
1.)의 runas /user:Administrator
경우 더 높은 권한을 얻거나 컨텍스트 메뉴를 통해 배치 파일을 관리자로 시작하기 위해 시도 할 수 있습니다 . 그래도 도움이되지 않으면 관리자도 권한이 없을 수 있습니다. 그런 다음 디렉토리의 소유권을 인수해야합니다.
2.) 다운로드 Process Explorer의 경우를 클릭 Find/Find handle or DLL...
하거나 누르고 Ctrl+F디렉토리 이름을 입력 한 다음 누가 사용하는지 확인합니다. 가능한 경우 디렉토리를 사용하는 응용 프로그램을 닫습니다.
rmdir <directory> /s
이것은 나를 위해 일했습니다.
이것은 디렉토리에 있기 때문에 발생합니다. CLI 및 탐색기가 디렉토리에 없는지 확인하십시오. 확인하려면 모두 닫으십시오. 그런 다음 관리자 권한으로 cd
상위 디렉토리로 실행하고 다음을 실행하십시오.
rmdir /s /q mydir
'programing tip' 카테고리의 다른 글
CSV 리더 (Python)의 "줄에 NULL 바이트 포함" (0) | 2020.10.19 |
---|---|
문자열에서 웹 작업자를 만드는 방법 (0) | 2020.10.19 |
pip 명령을 사용하여 requirements.txt에서 Python 패키지 업그레이드 (0) | 2020.10.19 |
쌓인 반투명 상자의 색상은 주문에 따라 다릅니 까? (0) | 2020.10.19 |
레이크는 정확히 무엇입니까? (0) | 2020.10.19 |