내부에 다른 폴더와 파일이 들어있는 하나의 폴더를 삭제해야합니다. 시도 del
하고 rmdir
명령했지만 때로는 일부 오류 줄로 실패합니다.[PATH]: The directory isn't empty.
좋은 대안이 있습니까?
내부에 다른 폴더와 파일이 들어있는 하나의 폴더를 삭제해야합니다. 시도 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}
timeout /t 3
pause
명령 이 없습니다 ).
시험:
rmdir /S your_directory
또는:
rmdir /S /Q your_directory
확인 메시지를 건너 뛰려면
del
하고 rmdir
아무것도 요구하지 않습니다, 그들은 단지 설명에서처럼 몇 줄을 보낼 수 있습니다.
rmdir /s
삭제할 수있는 모든 것을 삭제합니다. 프로그램에 의해 잠겨있는 파일, 읽기 전용 파일 또는 삭제하기 위해 관리 액세스가 필요한 파일이있을 수 있습니다. 당신을 위해 모든 상황을 처리하는 하나의 명령은 없습니다
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 스위치는 시스템 또는 숨김 파일 속성에 대해 경고하지 않으므로주의하십시오.
윈도우 (DOS, 윈도우 95 / 98 / ME)의 이전 버전을 폴더 DELTREE
에 동등 RM
또는 RMDIR
. 나는 DELTREE
Windows 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.
나는 당신이 이것을 다음과 같이 사용할 수 있다고 생각합니다 :
msg*your file is going to delete
pause
del/s /q "C:\Users\Rd\Desktop\New folder (2)\"
rmdir /s /q "C:\Users\Rd\Desktop\New folder (2)\"
mkdir "C:\Users\Rd\Desktop\New folder (2)"