Удалите все файлы в папке, кроме одного расширения (например, .idf), используя пакетный файл

Удалите все файлы в папке, кроме одного расширения (например, .idf), используя пакетный файл

Мой текущий код для удаления всех файлов в папке старше 2 дней:

forfiles /p "C:\Test" /s /m *.* /c "cmd /c Del /F /Q @path" /d 2

Есть один.idffile среди всех других файлов. Я хочу удалить все файлы, кроме одного .idf-файла. Что мне изменить, чтобы текущий код игнорировал файл? Если это невозможно, любая новая команда будет полезна.

решение1

Чтобы немного улучшить ваш подход:

  • сохранить forfilesс /d -2переключателем для обработки только старых файлов
  • используйте for %Gwith if /I [%~xG] neq [.idf]для пропуска файлов с .idfрасширением
  • удвоить все %, если запустить из пакетного файла: %%Gвместо %Gи т. д.
  • удалять @echoне раньше, чем отладка.

Команда:

forfiles /p "C:\Test" /s /m *.* /c "cmd /c for %G in (@path) do @if /I [%~xG] neq [.idf] @echo del /F /Q %G" /d -2

Ресурсы(обязательно к прочтению):

Связанный контент