2017-12-07 5 views
0

Dies ist nicht gerade um Hilfe bitten, eher wie Neugier. Ich habe einen Pfad zu einer Datei wie folgt definiert in meinem Skript:

$RootDir = $PSScriptRoot 
$ExcelFile = $RootDir + "\" + $File + ".xlsx" 

Die $File Variable zuvor im Skript definiert ist. Diese Version funktioniert völlig in Ordnung, aber wenn ich versuchte, es so zu einer einzigen Zeile zu vereinfachen, es hat nicht funktioniert:

$ExcelFile = $PSScriptRoot + "\" + $File + ".xlsx" 

Jede Idee, warum die zweite Version nicht funktioniert? Es besagt, dass die Datei nicht gefunden wurde. Ich kann keinen logischen Grund dafür sehen.

+0

Ich sehe nicht, warum letzteres nicht funktionieren sollte, wenn erstere funktioniert. –

+0

Ja, ich finde es auch sehr seltsam. Aus allgemeiner Sicht gibt es nichts anderes. Vielleicht hat das '$ PSScriptRoot' einige Besonderheiten? Immerhin ist es keine manuell im Skript definierte Variable. –

Antwort

0

Für Gebäude Pfade verwenden, um die Join-Path Cmdlets:

$ExcelFile = Join-Path $PSScriptRoot ($File + '.xlsx') 

In Ihrem speziellen Fall, dass Sie auch mit einem einfachen String mit Variablen gehen könnten:

$ExcelFile = "${PSScriptRoot}\${File}.xlsx" 

Aber Join-Path sind belastbarer Ansatz, weil es automatically takes care of the path separator zwischen den Elementen.

Verwandte Themen