Como usar dir e copiar juntos para pesquisar diretórios e copiar para uma pasta?


10

Preciso procurar em uma pasta especificada e seus subdiretórios por arquivos, depois copiá-los para uma pasta especificada em outro lugar. É possível usar dire copycom um cano?

dir /s foo???.txt | copy g:\someplace

O acima não funciona. O lado esquerdo do canal encontra o que eu quero, mas não consigo copiar os arquivos encontrados. Estou usando o prompt de comando do Windows 7.


Que tipo de arquivo você precisa por curiosidade? Um curinga não seria suficiente?
Dave

Eu preciso usar os caracteres curinga (??? - "?" É um caractere curinga de um dígito) no comando para que o acima capturasse foo_42, foo_01, etc, e esses estariam em várias subpastas.
Flotsam N. Jetsam

Respostas:


10

Você poderia apenas usar xcopy:

xcopy /s foo???.txt g:\someplace

Isso manterá a estrutura de diretórios.

Se você não deseja a estrutura de diretórios, pode fazer o seguinte:

for /r %i in (foo???.txt) do xcopy /Y "%i" g:\someplace

Se você estiver usando isso em um arquivo em lotes, deverá dobrar o %seguinte:

for /r %%i in (foo???.txt) do xcopy /Y "%%i" g:\someplace

Na verdade, eu preciso mexer um pouco. Isso pode ser feito sem manter a estrutura de diretórios?
Flotsam N. Jetsam

Haha, era disso que eu tinha medo :) (foi por isso que afirmei especificamente). Mas o que você faria com nomes de arquivos duplicados? Isso não pode ser feito com o próprio xcopy, mas você pode fazê-lo canalizando algo para robocopy (ou talvez apenas copiar, mas em um arquivo em lotes). Qual versão do Windows você possui?
Rik

Windows 7. Não haverá duplicatas para o meu aplicativo.
Flotsam N. Jetsam

Adicionado o método para copiar para um diretório. Felizmente, não há necessidade de robocópia. Apenas use for /r.
Rik

11
Você é demais. Eu gostaria de poder te votar novamente. Obrigado!
Flotsam N. Jetsam
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.