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 :