2013-01-17 15:33:22 +0000 2013-01-17 15:33:22 +0000
59
59

Całkowicie usunąć folder w systemie Windows za pomocą wiersza poleceń

muszę usunąć jeden folder zawierający inne foldery i pliki wewnątrz. Próbowałem komend del i rmdir, ale czasami zawodzą z liniami błędów: [PATH]: The directory isn't empty.

Czy jest jakaś dobra alternatywa?

Odpowiedzi (8)

58
58
58
2013-01-17 15:38:19 +0000

Spróbuj:

rmdir /S your_directory

lub:

rmdir /S /Q your_directory

aby pominąć wiadomości potwierdzające.

16
16
16
2013-07-16 16:23:26 +0000

Dużo się to dzieje z moimi skryptami do automatycznego budowania.

Myślę, że powodem może być jakaś aplikacja, która ma plik otwarty w tym katalogu z “share delete”. Tzn. aplikacja pozwala na usunięcie pliku (dlatego uważam, że wywołanie DeleteFile nie zakończy się niepowodzeniem), ale plik zniknie dopiero po zamknięciu jego uchwytu przez tę aplikację.

Oznacza to, że plik może nadal tam być, gdy komenda rmdir spróbuje usunąć folder, stąd komunikat o błędzie. Wkrótce potem wspomniana aplikacja zamknie swój uchwyt, plik zniknie, a gdy sprawdzisz folder, który plik rmdir o nim mówił, będzie pusty.

Przynajmniej taka jest moja teoria.

Obejście proponowane przez Harry'ego Johnstona wygląda dobrze. Tylko ja wstawiłbym pauzę między komendy rmdir. Oczywiście Windows nie ma łatwego do skryptowania polecenia “pauza” (poprawka: starożytne wersje Windows nie mają, nowsze mają - zobacz komentarze). Ale jeśli wystarczy ilość sekund, można użyć ping, aby utworzyć pauzę:

ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul

Więc w sumie:

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}
11
11
11
2013-01-17 16:27:07 +0000

Możesz mieć kilka tylko do odczytu plików, możesz użyć opcji del /F, aby się ich pozbyć używając

del /S /F your_directory
     rmdir your_directory

Możesz mieć także kilka ukrytych plików i jeśli jesteś pewien, że chcesz je usunąć, możesz to zrobić używając

del /S /F /AH your_directory
     rmdir your_directory

Jeśli to nadal nie powiedzie się, wtedy albo nie masz pozwolenia na usunięcie niektórych plików, albo niektóre z nich są nadal w użyciu.

5
5
5
2013-01-17 22:34:36 +0000

Uważam, że w Windows 7 (i być może w innych wersjach) istnieje błąd, który czasami powoduje ten objaw; lub może to być błąd w oprogramowaniu innych firm. (Czy masz przypadkiem zainstalowany Symantec Endpoint Protection?)

W każdym razie, dość często się z nim spotykam. W większości przypadków problem można rozwiązać, uruchamiając rd /s /q dwa lub trzy razy z rzędu.

Jeśli jest to plik wsadowy, możesz zrobić coś takiego:

rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause
3
3
3
2013-01-17 15:36:33 +0000

Użyj del na plikach wewnątrz, a następnie rmdir do usunięcia folderu.

Aby użyć metody rmdir do usunięcia wszystkich plików, użyj przełącznika /S przed nazwą katalogu, a /Q do wyłączenia monitu o usunięcie. Jest to najlepszy sposób, aby to zrobić, ponieważ nie przegapisz żadnych plików. Bądź jednak ostrożny używając przełącznika /Q, ponieważ nie ostrzeże Cię on przed atrybutami System lub Ukrytych plików.

2
2
2
2017-12-01 18:08:45 +0000

Jeśli używasz węzła możesz użyć zależności rimraf w następujący sposób:

run install: npm install rimraf -g

delete folder: rimraf SourceFolder

To pomogło mi w uzyskaniu błędu:

nazwy plików źródłowych są większe niż obsługiwane przez system plików

0
0
0
2015-11-16 14:47:29 +0000

Myślę, że możesz użyć go w ten sposób:

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)"
0
0
0
2016-06-24 18:30:12 +0000

Folder starszych wersji systemu Windows (DOS, Windows 95/98/ME), DELTREE jest odpowiednikiem RM lub RMDIR. Używam DELTREE na mojej stacji roboczej z systemem Windows 7 w plikach wsadowych.

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.