nach dem Kopieren Ich habe laufende Probleme mit einem Skript, das ich geschrieben habe, dass ist (angeblich) folgende zu tun. Ich habe einen Ordner mit einer Reihe von CSV-Dateien, und ich möchte die neueste Datei mit dem Firmennamen in einen anderen Ordner kopieren und umbenennen.Powershell -renaming eine Datei
Es ist im aktuellen Format:
21Feb17070051_CompanyName_Sent21022017
ich es in folgendem Format will:
CompanyName21022017
Also habe ich folgenden Powershell-Skript, dies zu tun:
## Declare variables ##
$DateStamp = get-date -uformat "%Y%m%d"
$csv_dest = "C:\Dest"
$csv_path = "C:\Location"
## Copy latest Company CSV file ##
get-childitem -path $csv_path -Filter "*Company*.csv" |
where-object { -not $_.PSIsContainer } |
sort-object -Property $_.CreationTime |
select-object -last 1 |
copy-item -Destination $csv_dest
## Rename the file that has been moved ##
get-childitem -path $csv_dest -Filter "*Company*.csv" |
where-object { -not $_.PSIsContainer } |
sort-object -Property $_.CreationTime |
select-object -last 1 | rename-item $file -NewName {"Company" + $DateStamp + ".csv"}
die Datei scheint ok zu kopieren, aber die Umbenennungs versagt -
Rename-Item : Cannot bind argument to parameter 'Path' because it is null.
At C:\Powershell Scripts\MoveCompanyFiles.ps1:20 char:41
+ select-object -last 1 | rename-item $file -NewName {"CompanyName" + $DateSt ...
Ich denke, es hat etwas mit der Reihenfolge zu tun, in der Powershell funktioniert, oder die Tatsache, dass es die .csv in der Variablen $ Datei nicht sehen kann. Es gibt andere Dateien (Textdateien, Batch-Dateien) im Ziel, falls sich das auf die Dinge auswirkt. Jede Hilfe in denen ich falsch liege würde geschätzt.
'$ Datei' ist nicht definiert und wird nicht benötigt. Das Cmdlet ruft den Dateiparameter aus der Pipeline ab. – wOxxOm
Perfekt ... immer etwas Einfaches! Vielen Dank. – Ricky