Mam pętlę w pliku wsadowym, aby usunąć wszystkie opróczjeden plik w katalogu (Windows 7). Ale zawiesza się, ponieważ wciąż wysyła komendy na ekran, mimo że sądziłem, że go stłumiłem. Oto polecenie, którego używam:
for %i in (*) do if not %i == UPDATE.BAT del /s %i >nul 2>&1
Przetestowałem mój skrypt wsadowy, dziennik pokazuje, że zatrzymuje się w prawoprzy tym poleceniu. Przetestował polecenie w wierszu poleceń, wysyła polecenie "del / s file.ext> nul 2> & 1" do monitu o każdy plik w katalogu, co powoduje zawieszenie się pliku wsadowego.
Co muszę zmienić tutaj?
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli jest to bezpośrednio otwarte okno cmd, a nie partia,
możesz wyłączyć wyjście bieżącego polecenia z prowadzeniem @
znak.
@for %i in (*) do @if /i not "%i"=="UPDATE.BAT" @del "%i" >nul 2>&1
W trybie przełączania partii poleceń za pomocą @Echo off
i dwukrotnie %
znaki zmiennej for.
@Echo off
for %%i in (*) do if /i not "%%i"=="%~nx0" del "%%i" >nul 2>&1