Ftype in Powershell
Hallo community
Unter Powershell muss ich einen cmd Befehl "ftype" ausführen, aber dieser wird nicht übernommen.
Mein Powershell Skript sieht wie folgt aus.
function ftype { cmd /c ftype extmpp="C:\Program Files (x86)\ProjectViewer\ProjectViewer.exe" "%%1" }
Wo ist mein Fehler?
Im voraus vielen Dank für Eure Hilfe
Unter Powershell muss ich einen cmd Befehl "ftype" ausführen, aber dieser wird nicht übernommen.
Mein Powershell Skript sieht wie folgt aus.
function ftype { cmd /c ftype extmpp="C:\Program Files (x86)\ProjectViewer\ProjectViewer.exe" "%%1" }
Wo ist mein Fehler?
Im voraus vielen Dank für Eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1128467635
Url: https://administrator.de/contentid/1128467635
Ausgedruckt am: 19.11.2024 um 06:11 Uhr
9 Kommentare
Neuester Kommentar
Moin,
Zum einen musst du den Befehl als eine komplette Zeichenkette übergeben, da Powershell sonst durch das Gleichzeichen versucht einen Wert zu setzen.
Zum anderen wird der CMD-Befehl anschließend so ausgeführt, als wenn du ihn in der Konsole eintippst - und nicht wie bei einem Batch-Script.
Die Prozentzeichen darfst du somit nicht verdoppeln, sonst führt das später zu Fehlern bei der Ausführung des Programms, weil der Dateipfad nicht richtig übergeben wird.
Gruß Thomas
Zitat von @Ralus67:
Mein Powershell Skript sieht wie folgt aus.
Wo ist mein Fehler?
sind zwei Fehler.Mein Powershell Skript sieht wie folgt aus.
function ftype { cmd /c ftype extmpp="C:\Program Files (x86)\ProjectViewer\ProjectViewer.exe" "%%1" }
Wo ist mein Fehler?
Zum einen musst du den Befehl als eine komplette Zeichenkette übergeben, da Powershell sonst durch das Gleichzeichen versucht einen Wert zu setzen.
Zum anderen wird der CMD-Befehl anschließend so ausgeführt, als wenn du ihn in der Konsole eintippst - und nicht wie bei einem Batch-Script.
Die Prozentzeichen darfst du somit nicht verdoppeln, sonst führt das später zu Fehlern bei der Ausführung des Programms, weil der Dateipfad nicht richtig übergeben wird.
function ftype { cmd /c 'ftype extmpp="C:\Program Files (x86)\ProjectViewer\ProjectViewer.exe" "%1"' }
Gruß Thomas
Hat leider nicht funktioniert Ich finde die extmpp Erweiterung nicht, wenn ich nach ihr suche.
Hast du die ftype Funktion denn auch mal ausgeführt, nachdem du sie erstellt hast?Hat mich gleich gewundert, warum du eine Funktion für einen Befehl erstellst, den man eigentlich nur einmal ausführt.
Lass das mit der Funktion weg und führe einfach nur folgendes mit Powershell aus:
cmd /c 'ftype extmpp="C:\Program Files (x86)\ProjectViewer\ProjectViewer.exe" "%1"'
ftype | findstr "extmpp"
ftype extmpp
Zitat von @Ralus67:
ich habe Powershell als Administrator ausgeführt und diese beiden Befehle werden in einer ps1 Datei ausgeführt.
Wie ich oben schon gesagt habe, hast du in dem Fall noch keine Befehle ausgeführt(!), sondern lediglich Funktionen erstellt, die du dann aber nicht aufgerufen hast.function ftype { cmd /c 'ftype extmpp="C:\Program Files (x86)\ProjectViewer\ProjectViewer.exe" "%1"' }
function assoc { cmd /c '.mpp=extmpp'}
Lass das mit den Funktionen weg und führe einfach nur folgendes aus:
cmd /c 'ftype extmpp="C:\Program Files (x86)\ProjectViewer\ProjectViewer.exe" "%1"'
cmd /c 'assoc .mpp=extmpp'
Wieso braucht man denn hier die function nicht?
Funktionen sind nur dazu da, einen Code immer wieder ausführen zu können, ohne ihn jedes mal wieder komplett erneut tippen zu müssen.Beispiel:
function Deutschland {
write-host -BackGroundColor 'black' (' '*10)
write-host -BackGroundColor 'red' (' '*10)
write-host -BackGroundColor 'yellow' (' '*10)
}
In diesem Fall gebe ich einfach 3*10 Leerzeichen jeweils mit verschiedenen Hintergrundfarben auf der Konsole aus, um so die Deutschlandfahne zu erzeugen.
Von nun an kann ich mir immer wieder die Fahne auf der Konsole ausgeben lassen, in dem ich nur den Namen der Funktion eintippe:
Du hast also bei dir jeweils 2 Funktionen erstellt, eine Namens "ftype" und eine Namens "assoc" - nur aufgerufen hast du diese anschließend nicht.
Allerdings macht eine Funktion in deinem Fall ohnehin wenig Sinn, da du die Befehle ja nur ein einziges mal ausführen musst.