Löschen Sie ein Verzeichnis und seine Dateien über die Befehlszeile, geben Sie jedoch keinen Fehler aus, wenn es nicht vorhanden ist

83

Ich benötige einen Windows-Befehl, um ein Verzeichnis und alle darin enthaltenen Dateien zu löschen, möchte jedoch keine Fehler sehen, wenn das Verzeichnis nicht vorhanden ist.

Jaywayco
quelle

Antworten:

80

Leiten Sie die Ausgabe des delBefehls nach nul um. Beachten Sie 2, dass die Fehlerausgabe umgeleitet werden soll, um anzuzeigen. Siehe auch diese Frage und insbesondere das technische Dokument Verwenden von Befehlsumleitungsoperatoren .

del {whateveroptions} 2>nul

Oder Sie können vor dem Aufruf überprüfen, ob eine Datei vorhanden ist del:

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

Beachten Sie, dass Sie if exist c:\folder\(mit dem Trailing \) verwenden können, um zu überprüfen, ob c:\folderes sich tatsächlich um einen Ordner und nicht um eine Datei handelt.

GolezTrol
quelle
Versucht dies ich bekomme immer noch "Das System kann den angegebenen Pfad nicht finden"
Jaywayco
3
Rekursives Löschen rmdir /s /q some\where\myFolder 2>nul
erzwingen
@crusy Sehr geschätzt, aber das ist die gleiche Antwort ( rmdir= rd), die Dbenham bereits vor genau 6 Jahren gegeben hat
GolezTrol
58

Leiten Sie entweder stderr nach nul um

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

Oder überprüfen Sie vor dem Löschen, ob der Ordner vorhanden ist. Beachten Sie, dass das Trailing \im IF-Zustand kritisch ist.

if exist "c:\yourFolder\" rd /q /s "c:\yourFolder"
Dbenham
quelle
14
@GolezTrol - Keiner von Ihnen hat den Ordner gelöscht, wie vom OP angefordert. Sie haben sich beide darauf konzentriert, eine Datei zu löschen.
Dbenham
21

Für mich unter Windows 10 funktioniert Folgendes hervorragend:

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

qsteht für "Löschen ohne zu fragen" und ssteht für "Alle Unterordner und Dateien darin löschen".

Sie können den Befehl auch zusammenfassen:

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

Sie können stderr nach nul umleiten

del filethatdoesntexist.txt 2>nul
Bali C.
quelle
1
Hast du das versucht? Das funktioniert nicht. Wenn es nicht existiert, sehe ich immer noch den Fehler
dgo
1

Oben wird in der Eingabeaufforderung Y oder N angezeigt. Also habe ich stattdessen Folgendes verwendet und es funktioniert perfekt.

if exist cddd rmdir cddd

Hoffe das hilft jemandem.

Prost.

Anjana Silva
quelle
Um die Eingabeaufforderung zu vermeiden, müssen Sie dem Befehl rmdir / Q hinzufügen . Wenn Sie alle Dateien und Verzeichnisse gelöscht werden müssen müssen Sie auch / S . Sie haben die Eingabeaufforderung wahrscheinlich nicht gesehen, weil das Verzeichnis nicht vorhanden war.
Bemipefe