Questão Como posso copiar todos os arquivos com uma certa extensão em um único diretório (sem a estrutura de diretórios)?


Eu tenho tentado copiar todos os arquivos nos vários subdiretórios que possuem JPG extensão localizada em C: em um único diretório em D:. Eu não quero preservar a estrutura de diretórios.

Isto é tanto quanto eu consegui:

for /r C:\ %f in (*.jpg) do @copy "%f" D:\pictures

Depois desse ponto, sou perguntado se quero sobrescrever D:\pictures. Se eu responder yes, Acabo com um único arquivo e, se respondo que não, nenhum arquivo é copiado.

Eu também tentei adicionar /y no final do comando, mas apenas sobrescreve os arquivos anteriores deixando apenas o último.


2


origem




Respostas:


Isso deve funcionar:

for /r C:\ %f in (*.jpg) do @copy "%f" D:\pictures\

Explicação:

O comando copy "%f" D:\pictures copia o arquivo %f para a localização D:\pictures, que é o arquivo pictures no diretório D:\.

Adicionando um trailing \ para ter a certeza copy trata pictures como um diretório.

Se você copiar vários arquivos para um único local (por exemplo, copy *.* D:\backup) copy trata automaticamente backup como um diretório. Mas este não é o caso quando você copia um único arquivo.


2



Isso fez isso! Obrigado! - Doug
O que fazer se houver mais de um arquivo com o mesmo nome em diretórios diferentes? O comando acima substituiria o primeiro arquivo copiado pelo último? Como podemos evitar isso? Obrigado. - NoChance
@EmmadKareem: Nenhum dos utilitários de cópia padrão (copy, xcopy, robocopy) possui uma função interna para evitar a invasão. Você deveria fazer uma nova pergunta. - Dennis


para / R c: \ %% 1 em ("* .txt") do @xcopy "%% 1" d: \ txttemp %% ~ p1 / e / i / s / q / h

este código será copiado sem sobrescrever e criará pastas e subpastas


0