2015-07-09 4 views
0

Я использую этот маленький пакетный файл для архивирования моих файлов.Robocopy folder IF ВСЕ файлы в папке старше 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 дней?

Благодаря

не
+0

Я думаю, вы можете запустить robocopy в режиме подробного списка, добавив '/ L/V/njh/njs | find" слишком новый "' и в следующей строке 'if errorlevel 1 goto DoMove' – wOxxOm

+0

Спасибо A LOT за ваш комментарий , Можете ли вы написать весь код для меня? –

ответ

0

Первый запуск 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 там нет необходимости надеюсь, удалять пустые папки.

+0

Ничего себе, я думаю, что это работает, спасибо большое. –

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