Cópia de reversão de arquivos de SOURCE para DESTINATION

3

como reverter a cópia de arquivos de SOURCE para DESTINATION? Deixe-me dar exemplos baseados no Magento (mas isso não importa).

Quando eu instalo um novo módulo, eu obtenho um arquivo zip, eu o extraio em uma pasta temporária como c: \ temp \ my_new_module

Eu tenho um monte de diretórios e arquivos extraídos do zip. Alguns dos diretórios mapeiam diretórios Magento, alguns são novos diretórios.

Em seguida, copio os arquivos do caminho principal (c: \ temp \ my_new_module) para o caminho da raiz do magento (c: \ magento)

Digamos que eu teste o módulo alguns dias depois e não gostei, como posso reverter DESTINATION? ou seja, como remover DESTINATION = c: \ magento:

  1. novos diretórios com novos arquivos de c: \ magento (que foram copiados de SOURCE)
  2. novos arquivos adicionados aos diretórios existentes do Magento

Isso significa que eu quero preservar arquivos e pastas em DESTINATION que já estavam lá antes da cópia colar! Eu não quero tocar em nada de SOURCE (nem remover ou qualquer outro).

Eu estou procurando um script para fazer isso (linha de comando), eu acho que iria comparar SOURCE e DESTINATION.

For Each File from SOURCE
    if FILE_EXIST in DESTINATION 
    Then DELETE FILE From DESTINATION
    If DIRECTORY_IS_EMPTY in DESTINATION 
    THEN DELETE DIRECTORY in DESTINATION

(este último preservará diretórios não vazios, isto é, aqueles que foram criados antes da cópia)

obrigado por qualquer ajuda, Rod

    
por Rod 20.08.2016 / 09:33

1 resposta

2

My question is, days after I did that, how can I automate the removal of all Files I have copied?

Você pode usar Robocopy para analisar um diretório [source] de todos os arquivos e subpastas e verificar recursivamente em relação a outro diretório [destination] para os mesmos arquivos que já existem na fonte.

Você pode usar as opções para que ele exclua os arquivos da origem, se esses mesmos arquivos já existirem no destino (a pasta para a qual você copiou) e fará isso de forma recursiva, mas não remover pastas.

Você também pode usar opções para NÃO copiar os arquivos na origem que não estão no diretório de destino para NÃO copiar esses arquivos, pois você concluirá a operação de cópia manualmente.

Você só precisa excluir os ARQUIVOS da fonte recursivamente que já existem no destino. Você concluirá a operação de cópia de novos arquivos da origem para o destino manualmente e precisará apenas de algo para ajudar a simplificar a limpeza dos arquivos na origem que já foram copiados manualmente para o destino.

Script de Robocopy

Eu testei o cenário listado acima e ele funcionou exatamente como eu expliquei e da maneira esperada, então este método foi testado

@ECHO ON
SET Source=F:\TestSource
SET Destination=F:\TestDest

ROBOCOPY "%Source%" "%Destination%" *.* /S /IS /PURGE /MOV /NOCOPY
GOTO EOF

Mais recursos

         /S :: copy Subdirectories, but not empty ones.
    /NOCOPY :: COPY NO file info (useful with /PURGE).
     /PURGE :: delete dest files/dirs that no longer exist in source.
       /MOV :: MOVe files (delete from source after copying).
        /IS :: Include Same files.
    
por 04.09.2016 / 08:35