/ / Alle bis auf eine Dateischleife mit Bat-Skript löschen - Windows, Batch-Datei, Befehlszeile, Del

Löschen Sie alle außer einer Dateischleife mit Bat-Skript - Windows, Batch-Datei, Befehlszeile, Del

Ich habe eine Schleife in einer Batch-Datei, um alle zu löscheneine Datei in einem Verzeichnis (Windows 7). Aber es hängt auf, weil es immer noch die Befehle an den Bildschirm sendet, obwohl ich dachte, ich hätte es unterdrückt. Hier ist der Befehl, den ich verwende:

for %i in (*) do if not %i == UPDATE.BAT del /s %i >nul 2>&1

Getestet mein Batch-Skript, Protokoll zeigt, dass es richtig stopptbei diesem Befehl. Getestet den Befehl in der Befehlszeile, gibt den Befehl "del / s file.ext> nul 2> & 1" an die Eingabeaufforderung für jede Datei in dem Verzeichnis aus, wodurch meine Batchdatei hängen bleibt.

Was muss ich hier ändern?

Antworten:

2 für die Antwort № 1

Wenn dies direkt in einem geöffneten cmd-Fenster und nicht in einem Batch ist,
Sie können die Ausgabe des aktuellen Befehls mit einem führenden unterdrücken @ Schild.

@for %i in (*) do @if /i not "%i"=="UPDATE.BAT" @del "%i" >nul 2>&1

Bei einer Batch-Umschaltausgabe der Befehle mit @Echo off und verdopple die % Zeichen der für Variable.

@Echo off
for %%i in (*) do if /i not "%%i"=="%~nx0" del "%%i" >nul 2>&1