Eu tenho um diretório Source com alguns arquivos, que eu gostaria de copiar para uma pasta Destination. O destino pode existir e já pode ter arquivos. Quaisquer arquivos com o mesmo nome que os do Source devem ser substituídos.
Se eu executar isso no Powershell:
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Em seguida, a primeira linha cria a pasta .\Destination
e copia .\Source
nela, que é o que eu gostaria de repetir para a próxima vez. No entanto, a segunda linha copia .\Source
para a nova .\Destination
pasta (criando .\Destination\Source
) e a terceira linha sobrescreve .\Destination\Source
novamente.
Como posso fazê-lo agir como no primeiro caso o tempo todo? Ou seja, substituir em .\Destination
vez de copiar para ele?
windows-7
powershell
Douglas
fonte
fonte
if exists
problema facilmente e não exigirá que você exclua recursivamente o seu destino com força, o que traz seus próprios perigos.Respostas:
Então o problema é que
só funciona se
bar
não existir esó funciona se
bar
existir. Portanto, para contornar o problema, você precisa garantir quebar
exista antes de fazer qualquer coisafonte
Se você deseja copiar apenas o conteúdo da pasta "source", use
fonte
destination
já existir.A resposta de Steven Penny https://superuser.com/a/742719/126444 não exclui o conteúdo original do diretório de destino, apenas o anexa. Eu precisava substituir completamente a pasta de destino pelo conteúdo da fonte e criei 2 funções:
fonte
Digamos que você tenha a seguinte estrutura de diretórios
raiz
Na pasta raiz, você pode obter os resultados desejados pela seguinte sequência de comandos:
$files = gci ./folder_b -name
cp ./folder_a/*.txt -Exclude $files ./folder_b
Apenas c.txt será copiado
fonte