배치 스크립트에서 rmdir 명령을 실행할 때 "디렉토리가 비어 있지 않습니다" 오류를 해결하는 방법
배치 스크립트를 만들고 있는데, 이 스크립트의 일부가 디렉토리와 그 서브 디렉토리를 모두 삭제하려고 합니다.서브 디렉토리가 비어 있지 않다는 에러가 간헐적으로 발생합니다.인덱스가 범인이라는 기사를 읽었어요.WSearch를 비활성화했는데 다시 오류가 발생하였습니다.명령어는 다음과 같습니다.
rmdir /S /Q "C:\<dir>\"
해리 존스턴 rmdir /s /q 있지 /s★★★★★★★★★★★★★★★★★★★★★★★★★★!「Windows」의 「Windows」의 「Windows」.
은 ★★★★★★★★★★★★★★★★★★★★★★★★」del디렉토리 자체를 삭제하기 전에, 디렉토리의 모든 것을 확인합니다.
del /f /s /q mydir 1>nul
rmdir /s /q mydir
(the)1>nul 출력을 숨깁니다.의 .del그렇지 않으면 삭제한 모든 파일이 나열됩니다.)
나는 이 문제를 잘 알고 있다.가장 간단한 회피책은 조건부로 작업을 반복하는 것입니다.실제로 열려 있는 파일이나 권한 문제가 없는 한 두 번 연속 실패하는 경우는 본 적이 없습니다.
rd /s /q c:\deleteme
if exist c:\deleteme rd /s /q c:\deleteme
방금 같은 문제가 발생했는데 일부 파일이 손실되거나 손상된 것과 관련이 있습니다.문제를 해결하려면 체크 디스크를 실행하십시오.
chkdsk /F e:
이 작업은 검색 창 상자 또는 cmd 프롬프트에서 실행할 수 있습니다./F파일 복구와 같은 발견된 모든 문제를 해결합니다.실행이 완료되면 일반 파일 및 폴더를 삭제할 수 있습니다.
명령 프롬프트를 Admin으로 입력하고 실행합니다.
rmdir /s <FOLDER>
비슷한 문제가 발생하여 윈도 탐색기를 사용하여 빈 폴더를 삭제하려고 했습니다.비어있지 않은 오류가 표시되었기 때문에 admin cmd를 통해 시도했다고 생각했지만 이 답변은 도움이 되지 않았습니다.
파일을 빈 폴더로 옮긴 후.비어있지 않은 폴더를 삭제할 수 있었습니다.
@@gfullam @BoffinbraiN @BoffinbraiN @BoffinbraiN @ @BoffinbraiN @ @입니다.<dir>하는 것 되어 있지 수 .「삭제하다」에 서브 디렉토리가 가 있습니다.서브 디렉토리가 있는 경우<dir>「디렉토리가 비어 있지 않다」라고 하는 메세지가 표시되고, 유일한 해결책은, 디렉토리상에서 반복해, 그 모든 파일을 수동으로 삭제하는 것입니다.나는 결국 항구를 사용하기로 결정했다.rmUNIX " " " " rm.exeGit Bash, MinGW, Cygwin, GnuWin32는 GnuWin32를 사용합니다.PATH에 부모 디렉토리를 가지고 UNIX 시스템과 같이 실행하기만 하면 됩니다.
배치 스크립트의 예:
set PATH=C:\cygwin64\bin;%PATH%
rm -rf "C:\<dir>"
내 경우 이렇게 root 디렉토리로 폴더를 옮겼습니다.
move <source directory> c:\
그리고 명령어를 실행하여 디렉토리를 삭제했습니다.
rmdir c:\<moved directory> /s /q
'C:'가 있었어요\Users\사용자명\원드라이브\폰트'는 mklink' ( /D )에서 "C:"로 표기되어 있습니다.\Windows\'글꼴'도 같은 문제가 발생했어요.저 같은 경우에는
cd "C:\Users\User Name\"원드라이브"
rd/s 글꼴
Y(액션을 확인하기 위해)
날 도와줬어너에게도 도움이 되었으면 좋겠어;D
나에게 효과가 있었던 것은 다음과 같다.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
★★rd /s가 특정 파일 삭제를 거부한 것은 디렉토리 내의 파일에 있는 READ ONLY 파일 속성 때문일 가능성이 높습니다.
이 문제를 해결하는 적절한 방법은 먼저 모든 파일의 속성을 리셋하는 것입니다.
attrib -r %directory% /s /d
rd /s %directory%
숨김 파일이나 시스템 파일과 같은 다른 파일이 있을 수 있으므로 안전하게 재생하려면 다음 절차를 따릅니다.
attrib -h -r -s %directory% /s /d
rd /s %directory%
Windows가 「설계상 파손」되는 경우가 있기 때문에, 빈 폴더를 작성한 후, 「파손된 폴더」를 백업 모드로 「빈 폴더」로 미러링 할 필요가 있습니다.
robocopy - cmd copy utility
/copyall - copies everything
/mir deletes item if there is no such item in source a.k.a mirrors source with
destination
/b works around premissions shenanigans
다음과 같이 빈 dir를 만듭니다.
mkdir empty
깨진 폴더를 다음과 같이 빈 폴더로 덮어씁니다.
robocopy /copyall /mir /b empty broken
그런 다음 해당 폴더를 삭제합니다.
rd broken /s
rd empty /s
그래도 문제가 해결되지 않으면 restart를 클릭할 때 shift 키를 누른 상태에서 복구 모드에서 이러한 명령을 다시 실행하여 "명령 프롬프트를 사용한 복구 모드"로 재시작해 보십시오.
라이너 1개:
if exist folder rmdir /Q /S folder
다음과 같이 NPM 스크립트로 사용하고 있습니다(Javascript).
//package.json
"scripts": {
"start": "parcel --no-cache",
"clean": "if exist dist rmdir /Q /S dist",
"deploy": "npm run clean && parcel build --no-source-maps && firebase deploy"
},
관리자로 CMD 열기
chkdsk c: /F /R
- 다음 번에 시스템을 재부팅할 때 디스크를 확인하라는 메시지가 표시되면 "Y" 키를 누릅니다.
머신을 재기동합니다.그런 다음 폴더를 삭제하십시오.
생각할 수 있는 원인은 다음과 같습니다.
- 더 높은 권한이 필요한 파일 또는 하위 디렉터리가 있습니다.
- WSearch 뿐만 아니라 바이러스 스캐너나 다른 어떤 것에 의해서도 사용되고 있는 파일이 있습니다.
1 1.을(를) 시험해 볼 수.runas /user:Administrator더 높은 권한을 얻거나 컨텍스트메뉴에서 관리자 권한으로 배치파일을 기동합니다.그래도 문제가 해결되지 않으면 관리자라도 권한이 없을 수 있습니다.그런 다음 디렉토리의 소유권을 넘겨받아야 합니다.
2.) 프로세스 탐색기를 다운로드하려면Find/Find handle or DLL...또는 를 눌러 디렉토리 이름을 입력하고 사용하는 사용자를 확인합니다.가능한 경우 디렉토리를 사용하는 응용 프로그램을 닫습니다.
Harry Johnston의 대답과 비슷하게, 나는 효과가 있을 때까지 반복한다.
set dirPath=C:\temp\mytest
:removedir
if exist "%dirPath%" (
rd /s /q "%dirPath%"
goto removedir
)
디렉토리 강제 삭제(존재하는 경우)
Delete.bat
set output_path="C:\Temp\MyFolder"
if exist %output_path% (
echo Deleting %output_path%
attrib -r /s /d %output_path%
rd /s /q %output_path%
)
삭제하려는 디렉토리 이름에 여분의 공백이 없는지 확인하기 전에 이 문제를 수정했습니다.전달처의 변수내에 디렉토리명이 포함되어 있는 경우, 이것은 더욱 염려가 됩니다.RD따옴표로 직접 지정하는 경우는 도움이 되지 않지만, 저와 같은 사람이 같은 문제를 안고 와서 봐 주셨으면 합니다. RD /S /Q문제가 발생하기 시작한 것은 배치 스크립트에서 무언가를 변경했기 때문입니다.
가장 쉬운 방법은 다음과 같습니다.
rm -rf dir_name
zsh - macOS에서 동작하며 Windows cmd에서도 동작합니다.
를 WindowsPowerShell을 사용합니다.이 방법은 다음과 같습니다.
rmdir .\directory_name\ -Recurse
언급URL : https://stackoverflow.com/questions/22948189/how-to-solve-the-directory-is-not-empty-error-when-running-rmdir-command-in-a
'source' 카테고리의 다른 글
| PowerShell을 사용하여 CPU 및 RAM 사용률을 확인하는 방법 (0) | 2023.04.08 |
|---|---|
| SQL Server Management Studio에서 열 값을 NULL로 설정하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
| Windows 핸들이란? (0) | 2023.04.08 |
| 디렉토리를 비교하는 도구(Windows 7) (0) | 2023.04.08 |
| PowerShell에서 파일의 전체 경로 가져오기 (0) | 2023.04.08 |