peterleb

Powershell Datei umbenennen

Hallo Alle.

2021 hatte ich schon mal das Thema.
Fehler VBScript
Initial ging es um VBS, doch schlußendlich schlug colinardo ein kurzes knackiges Powershell-Script vor.
Der Dateiname bei ausführbaren Dateien soll um die Dateiversion erweitert werden.

Hier der Code:

param(
    [parameter(mandatory=$true)][ValidateScript({Test-Path $_})][string]$file
)
Get-Item -LiteralPath $file | rename-item -NewName {"$($_.BaseName).$($_.VersionInfo.FileVersion)$($_.Extension)"} -verbose    

Manche EXE-Dateien enthalten jedoch keine Dateiversion, dann kommt als Namensergänzung "0.0.0.0".
In diesem Fall soll statt Dateiversion die Produktversion eingesetzt werden.
Die Zeile: param( ... muß zwingend in der 1. Scriptzeile stehen, sonst wird "param" nicht als cmd erkannt.

Also wie frage ich vor "Get-Item ..." richtig ab, ob die Datei, die als Argument übergeben wird, eine gültige Dateiversion enthält, so daß ich statt dessen die Produktversion für die Umbenennung verwende?

Schwierig ist auch die Testerei, da das Script im Kontextmenü ausgeführt wird und ich die Fehlermeldungen nicht lesen kann.

Vielen Dank im Voraus für Eure Geistesblitze.
Gruß
Peter
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 673011

Url: https://administrator.de/forum/powershell-datei-umbenennen-673011.html

Ausgedruckt am: 24.05.2025 um 14:05 Uhr

BiberMan
BiberMan 24.05.2025 aktualisiert um 12:20:02 Uhr
Goto Top
In diesem Fall soll statt Dateiversion die Produktversion eingesetzt werden
param(
    [parameter(mandatory=$true)][ValidateScript({Test-Path $_})][string]$file
)
Get-Item -LiteralPath $file | rename-item -NewName {"$($_.BaseName).$(if($_.VersionInfo.FileVersion -gt [version]'0.0.0.0'){$_.VersionInfo.FileVersion}else{$_.VersionInfo.ProductVersion})$($_.Extension)"} -verbose      
Schwierig ist auch die Testerei, da das Script im Kontextmenü ausgeführt wird und ich die Fehlermeldungen nicht lesen kann.
Einfach mit dem Dateinamen in einer gestarteten Konsole von Hand ausführen ...
./script.ps1 -file d:\Pfad\zur\datei.exe
Oder zum Start des Skripts über das Kontextmenü den Parameter -NoExit hinzufügen .
PeterleB
PeterleB 24.05.2025 um 13:54:30 Uhr
Goto Top
Das ist stark. Danke.
Zum Ausprobieren komme ich erst später.

Gruß
Peter