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.

Flotsam N. Jetsam
fonte
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
Rik
fonte
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