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.

jaywayco
źródło

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.

GolezTrol
źródło
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"
dbenham
źródło
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>
christopher2007
źródło
3

Możesz przekierować stderr do nul

del filethatdoesntexist.txt 2>nul
Bali C.
źródło
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.

Anjana Silva
źródło
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