Renommer récursivement des fichiers avec date de creation/modification
Bonjour à toutes et tous,
Je suis débutant sur Powershell et je viens faire appel aux experts que vous êtes, car je tourne en boucle:roll:
Je souhaite renommer des fichiers par lot, en ajoutant leur date de création/modification en début de nom.
Je script que j'ai, fonctionne très bien sur un fichier unique :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #Chemin complet du fichier
$SourceFile = "C:\Temp\liste des familles nomenclature générale.pdf"
#Date yyyy-MM-dd
Get-ChildItem "C:\Templiste des familles nomenclature générale.pdf" |
ForEach-Object { $Name = "{0:yyyy-MM-dd}_" -f $_.LastWriteTime }
#Récupère le nom du fichier uniquement
$FileName = [io.path]::GetFileNameWithoutExtension($SourceFile)
#Récupère l'extension du fichier uniquement
$FileExtension = [io.path]::GetExtension($SourceFile)
#Renommage du fichier
Rename-Item -Path $SourceFile -newname $Name$FileName$FileExtension
#On remplace les espaces par _
Dir -Recurse | Rename-Item -NewName {$_.Name -replace " ","_"} |
Par contre quand je souhaite effectuer la même chose pour plusieurs fichiers différents en même temps, cela ne fonctionne pas
J'ai essayé plusieurs chose mais rien y fait. Ma dernière tentative :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| $SourceFile = 'C:\Users\JMi\Desktop\TEST-RENAME-BAT\**.**'
#$SourceFile = dir -Recurse | Where-Object {$_.name -like "**.**"}
#On récupère les fichiers des répertoire avec leur date de création
Get-ChildItem -Path $SourceFile | ForEach-Object {$Name = "{0:yyyy-MM-dd}_" -f $_.LastWriteTime}
#Récupère le nom du fichier uniquement
$FileName = [io.path]::GetFileNameWithoutExtension($SourceFile)
#Récupère l'extension du fichier uniquement
$FileExtension = [io.path]::GetExtension($SourceFile)
#Renommage du fichier
Rename-Item -Path $SourceFile -NewName $Name$FileName$FileExtension
#On remplace les espaces par _
Dir -Recurse | Rename-Item -NewName {$_.Name -replace " ","_"} |
J'ai laissé volontairement une des lignes testées en commentaire.
J'ai l'impression que c'est les caractères génériques qui posent problème.
L'erreur le plus souvent renvoyé lors de mes essais :
Code:
1 2 3 4 5 6 7
| Rename-Item : Impossible de traiter l’argument car la valeur de l’argument «path» n’est pas valide. Modifiez la valeur de l’argument «path
» et réexécutez l’opération.
Au caractère C:\Users\JMi\Desktop\TEST-RENAME-BAT\NEW6.ps1:18 : 1
+ Rename-Item -Path $SourceFile -NewName $Name$FileName$FileExtension
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (:) [Rename-Item], PSArgumentException
+ FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.RenameItemCommand |
J'espère que vous pourrez m'éclairer et me guider.
Merci par avance.