Deixe-me resumir o que você acha que deseja (para maior clareza):
- Você deseja copiar, de um diretório de fotos, apenas os arquivos mais recentes, com menos de 365 dias, para um laptop.
- Nesse laptop, você deseja excluir os arquivos (desse diretório) com mais de 365 dias.
Com robocopy
, você pode fazer isso em algumas linhas. (Eu não acho que há uma maneira de fazer isso em um 'one-liner').
@echo off
:: set your directories
set photo_collection=\server\data\photos
set laptop_photos=\laptop\data\photos
:: this is a temporary delete directory where robocopy move older files.
set robo_delete=%temp%\~robodel
:: this will move photos older than 365 to a "delete"-directory
:: /CREATE files are NOT actually copied but created as 0-files, this is faster
robocopy "%laptop_photos%" "%robo_delete%" /e /MOVE /CREATE /MINAGE:365
:: this temporary directory is deleted
rmdir "%robo_delete%" /s /q
:: this will copy only newer photos, never older than 365 days, to the laptop
robocopy "%photo_collection%" "%laptop_photos%" /MIR /MAXAGE:365
Notas:
-
As linhas
::
são apenas comentários e podem ser removidas. -
Eu usei
\\server\data
e\laptop\data
para mostrar que você pode usar caminhos UNC. Você pode, é claro, usar apenasC:\source_of_photos
eD:\laptop_directory
ou algo assim. -
O diretório do laptop é sempre um backup dos arquivos (fotos) mais recentes que os 365 dias . Se as coisas derem errado, você sempre terá os originais em
\server\data\photos
. Não exclua fotos do diretório original, porque elas desaparecerão para sempre. -
Os arquivos mais antigos são movidos temporariamente para
%temp%\~robodel
. Com o/CREATE
eles não são realmente movidos, mas um arquivo 0 é criado para ele. Isso é muito mais rápido.