Aqui está um método de arquivo em lote que acabei de criar. Parece funcionar bem. Poderia ser melhorado (argumentos de linha de comando, etc ...) Vou deixar isso para outra pessoa ...
É necessário alterar 3 coisas para que funcione: os dois diretórios envolvidos na cópia e a extensão a ser atualizada (pode ser apenas . ).
A ação do programa é:
para cada arquivo em C:\root dir 1\*\*.ext
, o arquivo será atualizado a partir do arquivo encontrado em C:\root dir 2\*.ext
. (note que o primeiro é recursivo e o segundo é simples) (A comparação é puramente baseada no nome do arquivo. Se um arquivo com o mesmo nome for encontrado em vários lugares no diretório raiz 1, todos serão atualizados com o mesmo arquivo do diretório raiz). dir plana)
@echo off
setlocal enableextensions
SETLOCAL EnableDelayedExpansion
set OLDDIR=%CD%
set FLATDIR=C:\Root Dir 1(Hierarchical dir)\
cd /D "C:\Root Dir 2(Flat dir)"
for /r %%q in (*.ext) do (
cd "%%~dpq"
if exist "!FLATDIR!%%~nxq" (
echo Updating %%~dpnxq
copy /Y /B "!FLATDIR!%%~nxq" "%%~dpnxq" > nul
)
)
cd /d %OLDDIR%