PowerShell und GetFileNameWithoutExtension

Mitglied: AN34Mem

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.
Mitglied: mbehrens
14.01.2021 um 22:11 Uhr
Zitat von @AN34Mem:

Zum Problem:
"$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
oder
Wenn $i eine Datei wäre, könnte auch
zielführend sein.
Bitte warten ..
Mitglied: rubberman
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 ;-) face-wink

Steffen
Bitte warten ..
Mitglied: AN34Mem
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!
Bitte warten ..
Heiß diskutierte Inhalte
Viren und Trojaner
Emotet angeblich unschädlich gemacht
DoskiasVor 1 TagInformationViren und Trojaner15 Kommentare

Hallo zusammen, kam grade rein. Wir werden sehen ob es stimmt: Eilmeldung Bundeskriminalamt: Weltweit gefährlichste Schadsoftware unschädlich gemacht Stand: 27.01.2021 13:18 Uhr Deutsche Ermittler ...

Router & Routing
Erklärung zu diesen Geräten
RoadmaxVor 1 TagFrageRouter & Routing7 Kommentare

Hallo Zusammen, bei uns war heute spontan das Internet weg und wir mussten die Carrier Geräte neu starten. Mir stellt sich die Frage, welches ...

Windows Update
Clients melden sich nicht selbständig am WSUS Server
gelöst BPeterVor 1 TagFrageWindows Update12 Kommentare

Hallo, ich habe einen Windows Server 2019 WSUS in unserem AD eingerichtet. Die Clientkonfig übertrage ich per Group Policy. Sie wird auch vom Client ...

Firewall
PfSense als Exposed Host hinter FritzBox 6591 Cable
SMT000Vor 1 TagFrageFirewall7 Kommentare

Hallo zusammen, ich kenne mich mit dem Thema leider nicht gut aus und habe deshalb einige Verständnisfragen. Vorab, ich hab hier eine FritzBox 6591 ...

Exchange Server
5.4.1 Recipient address rejected: Access denied. AS(201806281)
gelöst DeclarationVor 1 TagFrageExchange Server5 Kommentare

Hallo im Unternehmen ist Microsoft 365 business installiert inclusice AD Syncronisierung bei 10 MA . Bis Samstag lief der Exchange perfekt. Seitdem bekommt ein ...

Windows 10
System Backup als ISO-Datei(Image) erstellen
Ramin-sVor 1 TagFrageWindows 1011 Kommentare

Hallo zusammen, Wir haben eine Mitarbeiterin bei der Arbeit, die für die längere Zeit nach Ausland geht und wird von Ausland arbeiten. Ich bin ...

Windows Server
Benutzer und Postfach über AD erstellen
Igdirli76Vor 1 TagFrageWindows Server10 Kommentare

Hallo Leute, bitte erschießt mich nicht gleich wegen meiner frage. Ich habe einen Windows Server 2019 Datacenter installiert und wollte beim User erstellen, dass ...

LAN, WAN, Wireless
Cisco AIR LAP1142NEK9 LW zu AN
gelöst bySwiftVor 1 TagFrageLAN, WAN, Wireless18 Kommentare

Hallo Zusammen, Ich habe mir einen Cisco AIR-LAP1142N-E-K9 geholt der aktuell noch im Lightweight Mode läuft. Diesen möchte ich auf Autonomouse umstellen sodass ich ...