Comment utiliser dir et copier ensemble pour rechercher des répertoires et copier dans un dossier?

10

Je dois rechercher un dossier spécifié et ses sous-répertoires pour les fichiers, puis les copier dans un dossier spécifié ailleurs. Est-il possible d'utiliser diret copyavec une pipe?

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

Ce qui précède ne fonctionne pas. Le côté gauche de la pipe trouve ce que je veux, mais je n'arrive pas à copier les fichiers trouvés. J'utilise l'invite de commande de Windows 7.

Flotsam N. Jetsam
la source
De quel type de dossier avez-vous besoin par curiosité? Un caractère générique ne suffirait-il pas?
Dave
J'ai besoin d'utiliser les caractères génériques (??? - "?" Est un caractère générique à un chiffre) dans la commande de telle sorte que ce qui précède capturerait foo_42, foo_01, etc. et ceux-ci seraient dans divers sous-dossiers.
Flotsam N. Jetsam du

Réponses:

10

Vous pouvez simplement utiliser xcopy:

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

Cela contiendra la structure du répertoire.

Si vous ne voulez pas la structure du répertoire, vous pouvez procéder comme suit:

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

Si vous l'utilisez dans un fichier batch, vous devez doubler %comme ceci:

for /r %%i in (foo???.txt) do xcopy /Y "%%i" g:\someplace
Rik
la source
En fait, je dois le tweeter un peu. Peut-on le faire sans conserver la structure du répertoire?
Flotsam N. Jetsam
Haha, c'est ce dont j'avais peur :) (c'est pourquoi je l'ai dit spécifiquement). Mais que feriez-vous avec des noms de fichiers en double? Cela ne peut pas être fait avec xcopy lui-même, mais vous pouvez le faire en canalisant quelque chose pour robocopy (ou peut-être simplement copier mais dans un fichier batch). Quelle version de Windows possédez-vous?
Rik
Windows 7. Il n'y aura pas de doublons pour mon application.
Flotsam N. Jetsam
Ajout de la méthode de copie dans un répertoire. Heureusement, pas besoin de robocopie. Utilisez simplement for /r.
Rik
1
Tu gères. J'aimerais pouvoir te voter à nouveau. Merci!
Flotsam N. Jetsam