Windows: copia arquivos e altera a extensão sem duplicatas

0

Eu tenho um diretório que tem arquivos de imagem sem extensão. Vamos dizer que seja D:\initial\ . Agora quero copiar esses arquivos para o diretório D:\final\ e alterar a extensão para .jpg para cada arquivo.

Minha solução usando o ROBOCOPY:

@echo off

SET srcDir=D:\initial\
SET destDir=D:\final\

echo Copying files from %srcDir%
ROBOCOPY %srcDir% %destDir% /s /min:102400
echo Copying done

cd %destDir%

echo Renaming to JPG
ren *. *.jpg

No entanto, existem certas condições:

  1. Copie apenas os arquivos com tamanho superior a 100 KB.
  2. Não exclua arquivos no diretório de origem.
  3. O diretório de origem irá, em certos períodos, obter arquivos mais novos; copiá-los para o diretório de destino (manualmente, sem necessidade de automação aqui)

Minha solução atende às duas primeiras condições, mas quando eu corro de novo depois que novos arquivos chegam, os mais antigos são copiados também, dando erro ao renomear.

    
por User528491 13.06.2018 / 09:43

1 resposta

2

Verifique o tamanho do arquivo e se existe um arquivo de destino com uma iteração nos arquivos de origem.

E use x para copiar em vez de invocar o robocopy toda vez, o que seria um exagero aqui.

Copiar para o novo nome com extensão de uma só vez elimina a necessidade de renomear.

@echo off

SET "srcDir=D:\initial"
SET "destDir=D:\final"

echo Copying files from %srcDir%
For %%A in ("%srcDir%\*.") do (
    if %%~zA gtr 102400 if not exist "%destDir%\%%~nA.jpg" copy "%%~fA" "%destDir%\%%~nA.jpg" >NUL
)
echo Copying done
    
por 13.06.2018 / 11:02