Usuń katalog i jego pliki za pomocą wiersza poleceń, ale nie zgłaszaj błędu, jeśli nie istnieje


86

Potrzebuję polecenia systemu Windows, aby usunąć katalog i wszystkie zawierające go pliki, ale nie chcę wyświetlać żadnych błędów, jeśli katalog nie istnieje.

Odpowiedzi:


84

Przekieruj dane wyjściowe delpolecenia do wartości nul. Zwróć uwagę 2, aby wskazać, że wyjście błędu powinno zostać przekierowane. Zobacz także to pytanie , a zwłaszcza dokument techniczny Korzystanie z operatorów przekierowania poleceń .

del {whateveroptions} 2>nul

Lub możesz sprawdzić istnienie pliku przed wywołaniem del:

if exist c:\folder\file del c:\folder\file

Zauważ, że możesz użyć if exist c:\folder\(z końcem \), aby sprawdzić, czy c:\folderrzeczywiście jest to folder, a nie plik.


Próbowałem tego nadal otrzymuję komunikat „System nie może znaleźć określonej ścieżki”
jaywayco

3
Wymuś rekursywne usuwanie, ignoruj ​​błędy:rmdir /s /q some\where\myFolder 2>nul
crusy

@crusy Bardzo cenione, ale to ta sama odpowiedź ( rmdir= rd), którą dbenham udzielił już dokładnie 6 lat temu
GolezTrol

60

Przekieruj stderr do nul

rd /q /s "c:\yourFolder" 2>nul

Lub sprawdź, czy folder istnieje przed usunięciem. Zwróć uwagę, że zakończenie \jest krytyczne w warunku IF.

if exist "c:\yourFolder\" rd /q /s "c:\yourFolder"

14
@GolezTrol - Żaden z was nie usunął folderu zgodnie z żądaniem OP. Oboje skupiliście się na usunięciu pliku.
dbenham

22

U mnie w systemie Windows 10 działa świetnie:

if exist <path> rmdir <path> /q /s

qoznacza „usuń bez pytania” i soznacza „usuń wszystkie podfoldery i pliki w nim”.

Możesz także połączyć polecenie:

(if exist <path> rmdir <path> /q /s) && <some other command that executes after deleting>

3

Możesz przekierować stderr do nul

del filethatdoesntexist.txt 2>nul

1
Próbowałeś tego? To nie działa. Jeśli nie istnieje, nadal widzę błąd
dgo

0

W powyższym monicie pojawia się T lub N. Więc zamiast tego użyłem następującego i działa idealnie.

if exist cddd rmdir cddd

Mam nadzieję, że to komuś pomoże.

Twoje zdrowie.


Aby uniknąć monitu, musisz dodać / Q do polecenia rmdir. Jeśli trzeba usunąć wszystkie pliki i podkatalogi trzeba również / S . Nie zobaczyłeś monitu prawdopodobnie z powodu braku katalogu.
Bemipefe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.