У меня запланированное задание для автоматической очистки папок на жестком диске; удаляет файлы старше определенного количества дней.

По сути, он запускает файл .bat полный строк, который выглядит следующим образом:

FORFILES /P "D:\Folder1\SubFolder1" /D -30 /C "cmd /c del /F /Q @path"
FORFILES /P "D:\Folder1\SubFolder4" /D -30 /C "cmd /c del /F /Q @path"

Я заметил, что задача часто никогда не заканчивается; и я не знаю почему. Файл .bat заканчивается через пару минут при запуске вручную, после чего папки очищаются.

Я думаю, причина может быть в том, что иногда может появиться подсказка:

Удалить [...] вы уверены? (Да / Нет): _

из-за рекурсивного удаления в подпапках. Обратите внимание, что я добавил /F и /Q переключатели для команды del .

Как я могу убедиться, что задача автоматически отвечает Y на любой запрос, который может появиться? Или это не тот путь, по которому я должен идти, чтобы решить мою проблему - я должен улучшить свой файл .bat ?

1 ответ1

2

Похоже, ваша проблема в том, что forfiles находит и файлы, и каталоги, а вы только хотите удалить файлы.

Пожалуйста, попробуйте это в команде /C:

"cmd /c if @ isdir == FALSE del @path"

Это вызовет команду del, только если итератор forfiles НЕ указывает на каталог.

Я бы пропустил -q, по крайней мере сейчас, чтобы посмотреть, все ли в порядке. Но я думаю, что вам не нужно / не нужно задавливать вопросы подтверждения, если вы нацелены на правильные вещи.

Кроме того, /f требуется, только если вы хотите удалить файлы только для чтения. Только сила, если вы уверены, что это необходимо :)

Удачи, Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .