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 :
J'espère que vous pourrez m'éclairer et me guider.
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
Merci par avance.
Partager