Partager via


PowerShell : Renommage en Masse de Fichiers (fr-FR)

Note : Cet article est une traduction.

Résumé

Cet article fait référence au post du  forum Copy and Edit Files. Quoi de neuf pour le renommage de  fichiers à l'aide de PowerShell ? Rien n'est nouveau mais les exigences et les scénarios diffèrent. 
Je (Chen V) voudrais partager avec vous mon apprentissage au quotidien de PowerShell et des guides.

Le besoin

Copier les fichiers du répertoire source vers le répertoire de destination en les renommant si leur longueur est supérieure à 10.

Pratique

help Rename-Item -Detailed            
            
help Copy-Item -Detailed            
            
help about_Foreach -Detailed            
            
help Where-Object -Detailed            
            
help Get-ChildItem -Detailed

Explication

Quand vous avez besoin d'aide pour les commandes PowerShell, vous pouvez l'obtenir par vous-même avant de diriger vers Google ou Bing Comment  ? Et où ? Nous allons examiner ce besoin du post du forum. Nous avons besoin de copier et de renommer des fichiers. J'ai utilisé la méthode ci-dessous pour réaliser la tâche  : copier des fichiers :

Get-Command -Verb Copy

Renommer des fichiers :

Get-Command -Verb Rename

Les éléments en sortie seront un ensemble de fonctions et d'applets de commande disponibles pour votre machine :). PowerShell est énorme nous ne pouvons pas nous rappeler toutes les commandes. 
Maintenant comment faire pour renommer les fichiers dont le nom est supérieur à 10 et  sinon les sauter ?

Code

$source = 'C:\Temp\Test\*.txt'            
$destination = "C:\Temp\Test1\"            
Copy-Item -Path $source -Destination $destination -Force            
$nr = 1            
(gci $destination -Recurse *) | ?({$_.BaseName.Length -gt 10}) |              
% {Rename-Item $_ -NewName ($_.BaseName.ToString().SubString(0,10) + '__{0:D1}' -f $nr++ )}     

Remarque : Ce post n'est pas encore marqué comme réponse. Vous pouvez faire ceci de plusieurs manières.

Truc de PowerShell 4.0

$source = 'C:\Temp\Test\*.txt'            
$destination = "C:\Temp\Test1\"            
Copy-Item -Path $source -Destination $destination -Force            
$nr = 1            
(gci $destination -Recurse *).Where({$_.BaseName.Length -gt 10}).Foreach({            
Rename-Item $_ -NewName ($_.BaseName.ToString().SubString(0,10) + '__{0:D1}' -f $nr++ )})

Profitez de PowerShell :)

Autres Langues 

Cet article est également disponible dans les langues suivantes :