2015-08-04 3 views
0

Я использовал эту команду:После удаления папки старше Х дней я получаю ошибку

FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path" 

удалить все папки старше 10 дней, и он работает нормально.

проблема заключается в том, что я получаю сообщение об ошибке, и это мой недостаток сборки:

ОШИБКА: Не удается найти указанный файл.

Мне нужно иметь выход с ERRORLEVEL = 0.

ответ

0

Добавить echo перед командой, чтобы посмотреть, что случилось (может быть, он пытается удалить вложенную уже удаленную папку):

FORFILES /S /D -10 /C "cmd /c IF @isdir==TRUE echo @path & rd /S /Q @path" 

Или вы можете просто сделать его безотказным явным образом проверить, если в папке существует:

FORFILES /S /D -10 /C "cmd /c IF @isdir==TRUE if exist @path rd /S /Q @path" 

BTW, forfiles метод не кажется надежным, как дата папка не обновляется для своих файлов «внучатые». Я бы использовал robocopy в режиме списка, чтобы сгенерировать список старых файлов, а затем обработать его: получить путь к папке для каждого файла и удалить его, если он все еще существует.

+0

Это то, что я получаю: «C: \ Test \ inner_test \ dfgdf» ОШИБКА: Система не может найти указанный файл. И это папка, которая была удалена –

+0

См. Обновленный ответ. – wOxxOm

+0

Спасибо за ответ. но теперь при проверке с «существует» я получаю ERRORLEVEL = 1, когда у него нет папок для удаления. ОШИБКА: Файлы не найдены с указанными критериями поиска. exit 1 –

Смежные вопросы