2017-10-15 5 views
-2

Je l'ai fait quelque chose comme ça avant avec les fichiers batchComment puis-je copier tous les fichiers dans un répertoire correspondant à certaines extensions avec PowerShell?

copy "%APPPATH%\*.exe" "%APPPATH%\*.exe.deploy" 

Je veux copier tous les fichiers .exe à `.exe.deploy »

Donc, si je suit dans un répertoire:

a.exe 
b.exe 
c.foo 
d.bar 

Je veux finir avec:

a.exe 
b.exe 
c.foo 
d.exe 
a.exe.deploy 
b.exe.deploy 
d.exe.deploy 

Il doit y avoir une façon élégante de le faire. BONUS Je voudrais aussi spécifier plusieurs extensions (* .exe, * .txt, * .blob) et le faire en une seule commande.

+2

* Il doit y avoir une façon élégante de le faire * - mendiants ne peuvent pas être choosers.. 'gci * .exe, * .txt | % {copy -L $ _ -D ($ _. nom + '. deploy')} ' – TessellatingHeckler

+0

@WhiskerBiscuit: quel code Powershell avez-vous essayé avant de demander de l'aide? – Manu

Répondre

0

Avec PowerShell vous souhaitez énumérer les fichiers que vous souhaitez copier et envoyer les résultats dans l'applet de commande Copy-Item:

Get-ChildItem $env:APPPATH -Filter *.exe | 
    Copy-Item -Destination { $_.FullName + '.deploy' } 

Notez que -Filter prend en charge une seule chaîne. Si vous voulez passer plusieurs extensions, vous devez utiliser -Include (mais qui fonctionne uniquement en combinaison avec -Recurse):

Get-ChildItem $env:APPPATH -Include *.exe,*.foo -Recurse | 
    Copy-Item -Destination { $_.FullName + '.deploy' } 
+0

Ah, je ne connaissais pas la syntaxe $ _ pipe. Qui aide – WhiskerBiscuit