Mesclar diretórios sem sobrescrever conflitos

2

Eu tenho duas estruturas de diretórios (A e B) que normalmente não se sobrepõem. Eu quero mesclar A em B.

O seguinte comando irá mesclar os diretórios:

xcopy A B /E /Y

No entanto, quero ser capaz de detectar conflitos entre meus dois diretórios e não sobrescreverei se o arquivo já estiver no destino (em B). O xcopy irá sobrescrever arquivos automaticamente. Eu não quero ser solicitado para cada conflito (/ y). Eu quero xcopy para retornar um erro no conflito.

A opção / D também não funciona, porque não me importo com a data.

Eu acho que isso não é possível com o xcopy. Existem outras soluções para isso?

    
por decasteljau 12.06.2013 / 15:57

2 respostas

5

Você pode usar o comando ROBOCOPY para mover todos os arquivos que não colidem com os arquivos existentes no destino. Eu adicionei a opção /L que lista o resultado, sem realmente fazer nada. Se funcionar como desejado, basta remover a opção /L para mover os arquivos.

robocopy sourcePath destinationPath /mov /xc /xn /xo /xx /L

O comando ROBOCOPY produz um registro legal de todas as ações necessárias. Usando o comando acima, você pode detectar quando os arquivos não foram movidos devido a colisão, observando a linha Files :... no resumo. Se o número copiado for menor que o total, então haverá colisões.

O comando ROBOCOPY tem muitas opções que o tornam extremamente poderoso. Digite HELP ROBOCOPY ou ROBOCOPY HELP em um prompt de comando para obter mais informações.

    
por 12.06.2013 / 18:04
0

Crie um arquivo, por exemplo dummy.txt fill ist com muitas linhas contendo N como este

N
N
N
N
N

Ligue para o XCOPY A B /E /-Y <dummy.txt >output.txt

qualquer linha no arquivo de saída contendo uma questão era um arquivo em conflito que não foi sobrescrito.

    
por 12.06.2013 / 17:15