Wie erstelle ich eine Batch-Datei, in der alle Ordner mit dem Namen "bin" oder "obj" rekursiv gelöscht werden?


31

Ich muss alle bin& objOrdner in einem Ordner auf meinem PC löschen . Also, ich denke an eine Batch-Datei, um das zu tun, aber ich bin nicht vertraut mit Batch-Datei in Windows. Bitte helfen Sie.

[Bearbeiten]

Nach einer Diskussion mit dem Benutzer DMA57361kam ich zu der aktuellen Lösung (immer noch ein Problem, siehe unsere Kommentare):

Erstellen Sie eine BAT-Datei und fügen Sie den folgenden Befehl ein:

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"

ODER

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"

@ DMA57361: Wenn ich Ihr Skript ausführe, wird die folgende Fehlermeldung angezeigt. Irgendeine Idee?

Alt-Text


@Nam - warum rennst du for \/d \/r ...- warum die doppelten Schrägstriche statt for /d /r ...? Wenn Sie die Vollversion mit /qam Ende ausführen, wird - wie ich bereits sagte - alles ohne Vorwarnung gelöscht, sodass keine Ausgabe zurückgegeben wird (dh es wird nicht angezeigt, wann es funktioniert, nur wenn ein Fehler vorliegt) oben laufen hat nicht richtig funktioniert?
DMA57361

@Nam dieser Lauf ist auch nicht der gleiche - in dem Bild, mit dem Ihr Befehl beginnt, for / %d in und nicht for /d /r . %d in- Sie müssen den gesamten folgenden Befehl verwenden, jedes Bit hat eine andere Funktion und ist wichtig.
DMA57361

@Nam Opps, ich entschuldige mich, Sie haben völlig Recht, es druckt nicht die ersten paar Schalter! Dieser Fehler tritt jedoch nicht auf und scheint für mich korrekt zu funktionieren. Haben Sie versucht, den Befehl einfach über die Befehlszeile auszuführen, anstatt ihn in einer Batchdatei auszuführen?
DMA57361

Hmm, wie komisch. Möglicherweise macht Ihr Win7 mit dem Batch etwas anderes als mein WinXP, nicht sicher, was. Ich werde heute Abend zu Hause nach Win7 sehen können, sonst fürchte ich, ich stecke im Moment fest ...
DMA57361

Stellen Sie dem Batch-Befehl tatsächlich das Präfix voran startund sehen Sie, was passiert. Nicht ideal, aber ich frage mich, ob das helfen kann.
DMA57361

Antworten:


42

Dies wurde bereits bei Stack Overflow beantwortet , von wo ich den Hauptschwerpunkt dieser Antwort übernommen habe.

Probieren Sie den folgenden Befehl aus, den Sie von innen ausführen können cmd:

for /d /r . %d in (bin,obj) do @if exist "%d" rd /s/q "%d"

Wenn andere Ordner geändert werden müssen, fügen Sie dem (bin,obj)Satz in der Mitte des Befehls einfach neue Elemente hinzu .

Dies löscht alle Übereinstimmungen ohne Vorwarnung und ohne Verwendung des Papierkorbs . Wenn Sie also ein bisschen mehr Sicherheit wünschen, lassen Sie /qden Anruf rdam Ende aus und das System sollte Sie vor jedem Löschen fragen.

for /d /r . %d in (bin,obj) do @if exist "%d" rd /s "%d"

Wenn Sie den Befehl in einer Batchdatei ausführen möchten , müssen Sie jede Instanz der Variablen %ddurch Folgendes ersetzen %%d:

for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
OR
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"

Wie laut der Umstellung hatte in der Frage Kommentare

Wenn der Befehl nicht in einer Batch-Datei ausgeführt werden kann (hier kann nicht repliziert werden), versuchen Sie, dem Befehl das Präfix "" zuzuweisen start. Dadurch wird der Prozess zwar gleichzeitig mit der Batchdatei gestartet, was zu anderen Problemen führen kann, es scheint jedoch wahrscheinlicher, dass er ordnungsgemäß funktioniert.

Wenn Sie Dateien mit dem Namen objoder binin der Ordnerstruktur haben, an der der Befehl arbeitet, wird eine Fehlermeldung für jede Datei angezeigt, die einen übereinstimmenden Namen hat. Diese übereinstimmenden Dateien werden nicht gelöscht und sollten dem Löschen des Befehls nicht im Wege stehen. Mit anderen Worten, sie können sicher ignoriert werden.


1
Wissen Sie vielleicht, wie ich einen Ordner in diesem Stammordner, in dem ich diesen Befehl ausführe, ignorieren kann?
Goran Obradovic

Perfekt funktioniert! Danke! +1
khr055

1

Diese Befehle sollten auf cmd funktionieren.

del * .obj

del * .bin


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.