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 № 1Wenn 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