Папка Robocopy, ЕСЛИ ВСЕ файлы в папке старше 60 дней

Я использую этот небольшой командный файл для архивирования своих файлов.

:: Move the files

robocopy P:\Folder1 Q:\Folder2 /move  /e /minage:60

:: Delete empty folders

q:

cd Folder2

for /f "tokens=*" %%d in ('dir /ad/b/s ^| sort /R') do rd "%%d"

pause >nul

Однако проблема в том, что многие мои папки содержат файлы разного возраста. И я получаю разделенные папки в источнике и месте назначения.

Помогите, пожалуйста, сделать так, чтобы bat файл перемещал только те папки, в которых ВСЕ файлы старше 60 дней?

Спасибо


person Oleg Chernov    schedule 09.07.2015    source источник
comment
Я думаю, вы можете сначала запустить robocopy в режиме подробного списка, добавив /L /V /njh /njs|find "too new", а в следующей строке if errorlevel 1 goto DoMove   -  person wOxxOm    schedule 12.07.2015
comment
БОЛЬШОЕ спасибо за ваш комментарий. Можете ли вы написать весь код для меня?   -  person Oleg Chernov    schedule 13.07.2015


Ответы (1)


Сначала запустите robocopy в режиме «только список» и, если не было «слишком новых» файлов, выполните фактическую операцию перемещения:

robocopy P:\Folder1 Q:\Folder2 /s /minage:60 /L /V /njh /njs | find "too new" >nul
if %errorlevel% EQU 0 (
    robocopy P:\Folder1 Q:\Folder2 /move /s /minage:60
)

pause >nul

Надеюсь, с параметром /s вместо /e нет необходимости удалять пустые папки.

person wOxxOm    schedule 13.07.2015