Muszę usunąć jeden folder zawierający inne foldery i pliki w środku. Próbowałem del
i rmdir
polecenia, ale czasami nie udaje się z niektórymi liniami błędów:[PATH]: The directory isn't empty.
Czy jest jakaś dobra alternatywa?
windows
command-line
Francesco Zanini
źródło
źródło
Odpowiedzi:
Zdarza mi się to często z moimi zautomatyzowanymi skryptami kompilacji.
Myślę, że powodem może być aplikacja, która ma otwarty plik w tym katalogu z „share delete”. Oznacza to, że aplikacja pozwala na usunięcie pliku (dlatego uważam, że wywołanie DeleteFile nie kończy się niepowodzeniem), ale plik zniknie dopiero po zamknięciu uchwytu przez aplikację.
Oznacza to, że plik może nadal tam być, gdy
rmdir
polecenie próbuje usunąć folder, stąd komunikat o błędzie. Wkrótce potem wspomniana aplikacja zamknie uchwyt, plik zniknie, a gdy przejrzysz folder, aby zobaczyć, który plikrmdir
mówi, będzie pusty.Przynajmniej taka jest moja teoria.
Obejście zaproponowane przez Harry'ego Johnstona wygląda dobrze. Tylko ja wstawiłbym pauzę między
rmdir
poleceniami. Oczywiście system Windows nie ma łatwego do skryptu polecenia „pauza” (korekta: starożytne wersje systemu Windows nie, nowsze mają - patrz komentarze). Ale jeśli wystarczająca jest szczegółowość sekund, można użyćping
pauzy:Łącznie:
źródło
rm -rf /directory/
powinien być globalny we wszystkich systemach operacyjnych.timeout /t 3
pause
polecenia).Próbować:
lub:
pomijać wiadomości potwierdzające.
źródło
del
irmdir
nic nie pytam, po prostu wysyłają kilka wierszy, takich jak ten w opisie.rmdir /s
usunie wszystko, co jest możliwe do usunięcia. Możesz mieć pliki zablokowane przez program, pliki tylko do odczytu lub pliki, które potrzebujesz dostępu administracyjnego, aby je usunąć. Nie ma jednego polecenia, któreMożesz mieć tylko pliki do odczytu, możesz użyć opcji del / F, aby się ich pozbyć
Możesz również mieć ukryte pliki, a jeśli naprawdę jesteś pewien, że chcesz je usunąć, możesz to zrobić za pomocą
Jeśli to nadal się nie powiedzie, oznacza to, że nie masz uprawnień do usunięcia niektórych plików lub niektóre z nich są nadal w użyciu.
źródło
Uważam, że w systemie Windows 7 (i być może w innych wersjach) występuje błąd, który czasami powoduje ten objaw; lub może to być błąd w oprogramowaniu innej firmy. (Czy masz przypadkowo zainstalowany program Symantec Endpoint Protection?)
W każdym razie natknąłem się na to dość często. W większości przypadków problem można obejść, uruchamiając
rd /s /q
dwa lub trzy razy pod rząd.Jeśli jest to plik wsadowy, możesz zrobić coś takiego:
źródło
Użyj
del
plików wewnątrz, a następniermdir
usuń folder.Aby użyć tej
rmdir
metody również do usunięcia wszystkich plików, użyj/S
przełącznika przed nazwą katalogu i/Q
ukryj monit o usunięcie. Jest to najlepszy sposób, aby to zrobić, ponieważ nie tracisz żadnych plików. Zachowaj ostrożność przy użyciu przełącznika / Q, ponieważ nie ostrzeże Cię on przed atrybutami System lub Ukryty plikźródło
Jeśli używasz węzła , możesz użyć zależności rimraf w następujący sposób:
uruchom instalację:
npm install rimraf -g
Usunięty folder:
rimraf SourceFolder
Pomogło mi to po otrzymaniu błędu:
źródło
Folder starszych wersji systemu Windows (DOS, Windows 95/98 / ME)
DELTREE
jest odpowiednikiemRM
lubRMDIR
.DELTREE
Na mojej stacji roboczej z systemem Windows 7 używam jednak plików wsadowych.źródło
Myślę, że możesz użyć tego w następujący sposób:
źródło