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

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

Tenho tentado copiar todos os arquivos nos vários subdiretórios que possuem uma JPGextensão localizada C:em um único diretório em D:. Não quero preservar a estrutura de diretórios.

Isto é o máximo que consegui:

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

Após esse ponto, sou questionado se desejo sobrescrever arquivos D:\pictures. Se eu responder yes, acabo com um único arquivo e, se responder não, nenhum arquivo será copiado.

Também tentei adicionar /yno final do comando, mas apenas sobrescreve os arquivos anteriores, deixando apenas o último.

Responder1

Isso deve funcionar:

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

Explicação:

O comando copy "%f" D:\picturescopia o arquivo %fpara o local D:\pictures, que é o arquivo picturesno diretório D:\.

Adicionando um final \para garantir que copyseja tratado picturescomo um diretório.

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

Responder2

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

este código irá copiar sem sobrescrever e criará pastas e subpastas

informação relacionada