2013-03-12 8 views
2

j'ai un dossier c: \ graphiques (root) et un programme crée des sous-dossiers aa, bm, CZX, mjpq, zz (ce qui est un exemple, j'ai beaucoup de sous-dossiers, longueur c'est variable). Dans chaque sous-dossier, j'ai 26 fichiers et un dossier. Par exemple, aa le dossier a: * aa_000.jpg *, * aa_001.jpg *, ..., * aa_023.jpg *; deux autres fichiers * aa_360.jpg *, aa.html et un dossier, le chemin complet est C: \ graphics \ aa \ aa_360. Je dois déplacer 24 fichiers * aa_000.jpg *, * aa_001.jpg *, ..., * aa_023.jpg * dans le sous-dossier c: \ graphics \ aa \ aa_360 et également égal à chaque sous-dossier. Autre exemple c'est c: \ graphics \ mjpq \ mjpq_360 devrait avoir mjpq_000.jpg, ..., mjpq_023.jpg.Powershell: Copier les fichiers sélectionnés dans les sous-dossiers

j'ai commencé le script, en pensant déplacer tous les fichiers .jpg (25) dans le sous-dossier (plus tard, je devais penser comme extrait le * xxx_360.jpg *) mais fonctionne pas:

Get-ChildItem c:\graphics -rec | where-object {$_.extension -match "jpg"} | ForEach-object {$newPath =(Get-Location).toString()+(Get-Location).ToString().SubString(10)+"_360"); Move-Item $_.FullName $newPath} 

mais Get -Location introuvable chemin du fichier. Merci pour l'avance.

REMARQUE: j'ai trouvé une solution. Travailler, mais je trouve des erreurs dans la console:

Get-ChildItem c:\graphics -rec | where-object {$_.extension -match "jpg" -and (!($_.name -like "*360*"))} | ForEach-Object {$newPath =($_.DirectoryName).toString()+($_.DirectoryName).ToString().SubString(10)+"_360"; Move-Item $_.FullName $newPath} 

Il est mon premier script Powershell;)

Répondre

6

Je pense que vous pouvez simplifier cela:

Get-ChildItem c:\graphics -rec *.jpg | Move-Item -Dest {$_.Directory.FullName + "\" + 
    $_.Directory.Name + "_360\" } -WhatIf 

Retirez le -whatif si les opérations de déplacement proposées semble correct.

+0

Fonctionnement. J'ai trouvé des erreurs, mais ça marche. Créez un fichier plus;). Merci – Todoes

+0

Je pense que vous avez besoin du paramètre -include dans la commande Get-ChildItem? – Ant

+0

@Ant Utilise le paramètre -filter par position. –

Questions connexes