PowerShell und GetFileNameWithoutExtension
AN34Mem (Level 1) - Jetzt verbinden
14.01.2021, aktualisiert 17:52 Uhr, 317 Aufrufe, 3 Kommentare, 2 Danke
Hallo.
Wie bitte funktioniert das mit PowerShell?
OK -----
egal.exe -import "%~1" "%~dpn1.xyz"
ENDE -----
PowerShell:
Invoke-Expression "egal.exe" -import "$i" "$i.xyz"
Zum Problem:
"$i" = Ist eine Datei / Wert mit den Namen: "test.txt"
"$i.xyz" = Eine Datei auf der FP mit den Namen: "test.xyz", die verwendet werden soll
Führt man den Befehl aus erscheint die Fehlermeldung:
Error opening file test.txt.xyz: Requested URL is not valid or cannot be found
Dies ist nachvollziehbar, da die Extension .txt mit übergeben wurde,
und der Dateiname auf der FP nur "test.xyz" heißt.
Die Möglichkeiten mit:
[System.IO.Path]::GetFileNameWithoutExtension
[System.IO.Path]::GetExtension
habe ich zwar gefunden, aber irgendwie will das nicht funktionieren.
Was ist nicht richtig, bzw. wie wird "%~dpn1" in PowerShell verwendet?
Danke für eure Hilfe.
Wie bitte funktioniert das mit PowerShell?
OK -----
egal.exe -import "%~1" "%~dpn1.xyz"
ENDE -----
PowerShell:
Invoke-Expression "egal.exe" -import "$i" "$i.xyz"
Zum Problem:
"$i" = Ist eine Datei / Wert mit den Namen: "test.txt"
"$i.xyz" = Eine Datei auf der FP mit den Namen: "test.xyz", die verwendet werden soll
Führt man den Befehl aus erscheint die Fehlermeldung:
Error opening file test.txt.xyz: Requested URL is not valid or cannot be found
Dies ist nachvollziehbar, da die Extension .txt mit übergeben wurde,
und der Dateiname auf der FP nur "test.xyz" heißt.
Die Möglichkeiten mit:
[System.IO.Path]::GetFileNameWithoutExtension
[System.IO.Path]::GetExtension
habe ich zwar gefunden, aber irgendwie will das nicht funktionieren.
Was ist nicht richtig, bzw. wie wird "%~dpn1" in PowerShell verwendet?
Danke für eure Hilfe.
3 Antworten
- LÖSUNG mbehrens schreibt am 14.01.2021 um 22:11:45 Uhr
- LÖSUNG rubberman schreibt am 14.01.2021 um 23:16:03 Uhr
- LÖSUNG AN34Mem schreibt am 15.01.2021 um 12:13:56 Uhr
LÖSUNG 14.01.2021 um 22:11 Uhr
Zitat von @AN34Mem:
Zum Problem:
"$i" = Ist eine Datei / Wert mit den Namen: "test.txt"
"$i" = Ist eine Datei / Wert mit den Namen: "test.txt"
$i ist ein String und keine Datei.
Was ist nicht richtig, bzw. wie wird "%~dpn1" in PowerShell verwendet?
Was spricht gegen
[System.IO.Path]::GetFileNameWithoutExtension($i)
$i.Split('\')[-1] -replace '\.\w+$'
$i.BaseName
LÖSUNG 14.01.2021, aktualisiert um 23:19 Uhr
Wenn nur die Dateiendung weggeschnitten werden soll, der Pfad aber erhalten bleiben soll (analog ~dpn), dann vielleicht so:
Das sieht jetzt logischerweise noch eher C#-like aus ... ¯\_(ツ)_/¯ Bin aber kein PowerShell Profi, vielleicht gibt's auch eine schönere Lösung.
Kannst da statt [NullString]::Value auch gleich die neue Dateiendung reinhängen
Steffen
$fullname = "C:\foo\bar.ext"
$dpn = [System.IO.Path]::ChangeExtension($fullname,[NullString]::Value)
Kannst da statt [NullString]::Value auch gleich die neue Dateiendung reinhängen
Steffen
LÖSUNG 15.01.2021 um 12:13 Uhr
Danke euch beiden (mbehrens + rubberman) für die jeweiligen Tipps,
Wahrscheinlich gibt es mehrere Lösungswege.
In meinem Fall konnte ich das Problem hiermit lösen:
Beispiel:
$string1 = $i.DirectoryName
$string2 = "\"
$string3 = $i.Basename
$string4 = ".xyz"
$ok = "$string1$string2$string3$string4"
Invoke-Expression "egal.exe" -import "$i" "$ok"
Ein größeres Problem war, dass die Text Datei "UCS-2 LE BOM" hatte (nicht darauf geachtet).
Zwingend war UTF-8, oder UTF-8-BOM sonst klappte der Import auch nicht.
Falls jemand auch so ein Problem hat, sollte das zwingend (Empfehlung) überprüft werden.
Gruß an euch ALLEN!
Wahrscheinlich gibt es mehrere Lösungswege.
In meinem Fall konnte ich das Problem hiermit lösen:
Beispiel:
$string1 = $i.DirectoryName
$string2 = "\"
$string3 = $i.Basename
$string4 = ".xyz"
$ok = "$string1$string2$string3$string4"
Invoke-Expression "egal.exe" -import "$i" "$ok"
Ein größeres Problem war, dass die Text Datei "UCS-2 LE BOM" hatte (nicht darauf geachtet).
Zwingend war UTF-8, oder UTF-8-BOM sonst klappte der Import auch nicht.
Falls jemand auch so ein Problem hat, sollte das zwingend (Empfehlung) überprüft werden.
Gruß an euch ALLEN!