Substituir arquivos espalhados do arquivo morto

2

Eu tenho muitos arquivos espalhados por vários diretórios de forma hierárquica. Eu tenho alguns desses arquivos copiados para um único diretório sem todos os subdiretórios. Eu preciso de uma maneira de atualizar todos os arquivos originais do único diretório linear de arquivos.

por exemplo,

Arquivos:

C:\dir1\dira\file1
C:\dir1\dira\file2
C:\dir1\dirb\file3
C:\dir1\dirc\file4
D:\dir2\dira\file5

e

Arquivos B

E:\dir\file1
E:\dir\file2
E:\dir\file3
E:\dir\file4
E:\dir\file5

Os arquivos B foram modificados e eu preciso "empurrar" as modificações para os arquivos A (somente aqueles que têm o mesmo nome de arquivo).

por exemplo, E:\dir\file1 copiado para C:\dir1\dira\file1 etc ...

É um processo bastante fácil e eu provavelmente poderia escrever um arquivo de lote, mas existe algum software que faça isso especificamente?

    
por Sathya 02.09.2012 / 01:00

2 respostas

2

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%
    
por 02.09.2012 / 14:37
1

Se eu entendi o problema corretamente, é para mesclar arquivos atualizados de um diretório para outro diretório que contém os arquivos originais e outros que não devem ser tocados.

Por ordem de facilidade de uso, essas ferramentas têm portas do Windows: Unison (GUI disponível), Rsync, "diff & patch".

    
por 02.09.2012 / 01:29