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

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 PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
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 PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.