PowerShell und GetFileNameWithoutExtension

Mitglied: AN34Mem

AN34Mem (Level 1) - Jetzt verbinden

14.01.2021, aktualisiert 17:52 Uhr, 302 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
Wünsch Dir was
Das ist ja nicht auszuhalten, dass ich für jeden googlen soll
NordicMikeVor 15 StundenAllgemeinWünsch Dir was22 Kommentare

Ich beantrage, dass bei jeder Beitragserstellung eine Checkbox angeklickt werden muss, mit dem Text: Ja, ich habe bereits danach gegoogelt. Ansonsten soll der "Senden" ...

Rechtliche Fragen
Adobe Flash erneut aktivieren, IT-Sicherheit + Datenschutz
anteNopeVor 1 TagFrageRechtliche Fragen14 Kommentare

Hallo zusammen, ich weiß es ist noch nicht Freitag aber mir ist hier gerade die Kinnlade bis in den Keller gefallen. Opel (ja der ...

Windows 10
Wie kann ich mehrere PCs gleich aufsetzten (mit User)
dressaVor 1 TagFrageWindows 1010 Kommentare

Hallo miteinander. Wie kann ich mehrere PCs (über 200) gleich aufsetzten. Ich habe etwa 4 Modele die sich nur von der Baugeneration unterscheiden. Also ...

Flatrates
Mobilfunktarife für die Firma (günstig)
gelöst ingo1988Vor 1 TagFrageFlatrates13 Kommentare

Hallo, kann mir jemand weiterhelfen im Bezug auf Mobilfunktarife für Unternehmen? Ich suche nämlich günstige Angebote im Telekom oder Vodafone Netz, ähnlich wie Lidl ...

Microsoft
Wie verteilt Ihr Software im AD auf die Clients? GPO?
Der-PhilVor 1 TagFrageMicrosoft14 Kommentare

Hallo! Die Kernfrage steht eigentlich schon im Titel: Wie verteilt ihr Software und haltet sie aktuell auf den Clients? Bislang mache ich das alles ...

Hardware
Homelab - Gebrauchte Server Hardware?
gelöst kernl33Vor 17 StundenFrageHardware16 Kommentare

Hallo zusammen, ich plane mir für mein Homelab einen 19 Zoll Server (2-4HE) anzulegen, es soll ein Hypervisor mit diversen VMs laufen. Hier zu ...

Cloud-Dienste
Server über zwei WAN Leitungen mit Load Balancing verfügbar machen
tobitobsnVor 1 TagFrageCloud-Dienste13 Kommentare

Moin zusammen, ich plane, einen Server im WAN über zwei Leitungen (Kabel und DSL) zwecks Ausfallsicherheit und Load Balancing verfügbar zu machen. Es sind ...

Festplatten, SSD, Raid
SATA Treiber für HP
ben1300Vor 10 StundenFrageFestplatten, SSD, Raid15 Kommentare

Hallo zusammen, ich habe einen PC von HP (Seriennummer: CZC3475D5D) Wollte hier Windows 7 Prof. installieren - es fehlt der SATA Treiber Leider kann ...