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.

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.


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"

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>

3

Sie können stderr nach nul umleiten

del filethatdoesntexist.txt 2>nul

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.