2009-05-26 17 views
2

CetteCopier le (s) fichier (s) contenant la chaîne dans un emplacement oneliner - y a-t-il un meilleur moyen avec cmd.exe?

for /f "tokens=*" %i in ('dir *sonic.exe /s /b') do copy /y "%i" D:\temp\utils\ 

La question est là une façon plus ou moins de le faire?

p.s. Je sais que « jetons = * » peuvent être omis si le chemin du fichier n'a pas les espaces ..

Mise à jour: J'ai trouvé des moyens plus courts de trouver (ne pas copier) de mes vieilles feuilles de triche:

::START - RUN - cmd.exe 
dir d:\libs\*SubSonic*.dll /s /b>>list.txt&list.txt 
:: START - RUN - CMD.EXE 
where /R D:\libs\ *SubSonic* 
+0

Est-ce que PS est complètement inacceptable? : P (IMO Il est atroce comprendre ce type de choses dans CMD.EXE par rapport à investir dans PowerShell même temps) –

+0

Pas du tout - mais que la question devrait être: Copier le (s) fichier (s) contenant la chaîne à un emplacement oneliner - Y a-t-il un meilleur moyen avec PowerShell? –

+0

Mais quand vous avez un * vraiment bon * marteau ...: D –

Répondre

1

Vous pourriez être en mesure de le faire avec XCOPY.

Cela fonctionne, mais copiera la structure des répertoires aussi que je ne pense pas est ce que vous voulez:

XCOPY /S *sonic.exe D:\temp\utils 
+0

En fait, il a copié uniquement les fichiers contenant la chaîne ... XCOPY/S * sonic.exe D: \ temp \ utils \ tmp D: ORM \ SubSonic_2.1_Final_Source \ src \ SubCommander \ bin \ Debug \ sonic.exe D: ORM \ SubSonic_2.1_Final_Source \ src \ SubCommander \ obj \ Debug \ sonic.exe 2 Fichier (s) copié (s) –

+0

Copier uniquement les fichiers correspondants , mais si le fichier source se trouve dans un sous-répertoire appelé bin, un fichier de destination sera également placé dans un sous-répertoire appelé bin. La boucle FOR ne le ferait pas, mais si vous voulez les sous-répertoires dans la destination alors XCOPY est définitivement ce que vous voulez. –

+0

Oui, la structure du dossier n'était pas nécessaire et n'a pas vraiment répondu à la question ... J'étais trop rapide pour marquer la réponse sans la tester correctement ... Bref merci pour les réponses et commentaires !!! –

1

Quelque chose comme

dir -r -i *sonic.exe | select-string "tokens=" | % {cp $_ d:\temp\utils} 

? [dans PS]

+0

+1 pour fournir un échantillon de travail. Merci. La théorie simple sans code de travail au sujet des problèmes discutés ici n'est pas très utile ... –

+0

Amusingly, je ne publie pas normalement le code et n'envoie pas la théorie (et n'obtiens pas + 1s: D)! (Et je n'ai pas testé cela, bien que je fasse des trucs similaires régulièrement). Si vous êtes intéressé par PS, il y a une nouvelle édition du livre de Payette sur le chemin à ajouter à votre liste de souhaits - c'est probablement le meilleur pour les développeurs (il y a beaucoup d'autres bons livres sur PS aussi) –