Hallo zusammen! Ich versuche eine (meinem Empfinden nach sehr simple) Aufgabe, die bisher durch Batch-Files gelöst wurde, auf Powershell "umzustellen" - scheitere aber schon an ganz elementaren Dingen. Da auch Google nichts hilfreiches dazu liefert scheine ich schon vom Ansatz her nen Verständnisproblem zu haben. Vllt kann mir jemand auf die Sprünge helfen: bei der Batch-Lösung werden zunächst einige Umgebungsvariablen gesetzt, mit denen dann später gearbeitet wird: set LINTINSTPATH=C:\PC-Lint set LINTCFGPATH=C:\PC-Lint\Cfg Anschließend kann ich die so gesetzten Umgebungsvariablen beim Aufruf einer EXE verwenden: "%LINTINSTPATH%\LINT-NT.EXE" +v -i%LINTCFGPATH% Module.lnt Nun versuche ich das gleiche mit Powershell: $Env:LINTINSTPATH="C:\PC-Lint" $Env:LINTCFGPATH="C:\PC-Lint\Cfg" &$Env:LINTINSTPATH\LINT-NT.EXE +v -i$Env:LINTCFGPATH Module.lnt Als Ergebnis bekomme ich: Error 307: Can't open indirect file 'Module.lnt' Wenn ich dagegen im Aufruf der EXE $Env:LINTCFGPATH durch C:\PC-Lint\Cfg ersetze funktioniert es: &$Env:LINTINSTPATH\LINT-NT.EXE +v -i"C:\PC-Lint\Cfg" Module.lnt Was mache ich falsch? Wie kann ich $Env:LINTCFGPATH richtig dem -i-Parameter mitgeben?
Ein Arbeitskollege hat spaßeshalber mal ChatGPT mit meiner Frage hier gefüttert - seine (oder ihre?) Antwort habe ich als Bild angehangen. Falls noch jemand das gleiche Problem hat: in Powershell muss die Umgebungsvariable in "" gesetzt werden, damit sie als String erkannt und behandelt wird: &$Env:LINTINSTPATH\LINT-NT.EXE +v -i"$Env:LINTCFGPATH" Module.lnt
:
Bearbeitet durch User
Interessant, auch die Antwort von ChatGPT, krass. Hier ist ein ähnlicher Thread mit 1, 2 nützlichen Tipps: https://stackoverflow.com/questions/41047123/powershell-concatenate-an-environment-variable-with-path Es ist immer eine Qual von CMD zu PWSH zu BASH zu Docker "BASH", blaaaa. Immer ist irgendwas mit dem escapen von Variablen... das nervt tierisch und frisst Zeit, aber ich fürchte da gibt es kein Allheilmittel :/
Welchen Grund gibt es denn, von CMD auf Powershell zu wechseln? Damit man die Syntax wieder nochmal neu lernen muß. Im Explorer wird ja leider nicht mehr die CMD gestartet, also tippe ich in Powershell eben erstmal CMD ein. Der blaue Hintergrund bleibt leider.
Üblicherweise wird zwischen dem Parameterbezeichner, in Deinem Fall "-i" und dem eigentlichen Parameterwert ein Leerzeichen geschrieben. Also so: &$Env:LINTINSTPATH\LINT-NT.EXE +v -i $Env:LINTCFGPATH Module.lnt Tom W. schrieb: > Falls noch jemand das gleiche Problem hat: in Powershell muss die > Umgebungsvariable in "" gesetzt werden, damit sie als String erkannt und > behandelt wird: > > &$Env:LINTINSTPATH\LINT-NT.EXE +v -i"$Env:LINTCFGPATH" Module.lnt Das müßte dann aber auf die erste Variable genauso zutreffen und diese müßte ebenfalls in "" kommen. Bei Deiner Schreibweise kann er schlichtweg nicht das -i vom Rest trennen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.