tulskie
Goto Top

Variable aus Batch in powershell -command verwenden

Hallo zusammen,
ich komme gerade mal nicht weiter und benötige Hilfe.

in einer Batch wird einer Variable ein zusammengesetzter Wert übergeben.
set Ausgabe = Hub %Ausgabe%,Gew %Ausgabe1%,Ausb %Las%

danach möchte ich die Variable Ausgabe in einem Powershell Befehl verwenden und beiße mir daran gerade die Zähne aus.
powershell -command "$content = (Get-Content -Path %Quelle%); ($content[60] = %Ausgabe%); ($content | Set-Content -Path %Quelle%)"

Die Ausgabe ist aber nie der Inhalt der Variable.
Ich habe alle möglichen Schreibweisen versucht, aber ich bekomme es nicht hin.

Über einen Hilfreichen Tipp würde ich mich sehr freuen.

Content-ID: 3533231820

Url: https://administrator.de/forum/variable-aus-batch-in-powershell-command-verwenden-3533231820.html

Ausgedruckt am: 04.01.2025 um 23:01 Uhr

colinardo
Lösung colinardo 03.08.2022 aktualisiert um 14:24:04 Uhr
Goto Top
Servus @Tulskie, und willkommen auf Administrator.de!
Da fehlen Anführungszeichen im PS Command um den literal String, so wird das sonst nicht als String verarbeitet
@echo off
set "quelle=D:\Pfad\datei.txt"  
set "Ausgabe=Hub %Ausgabe%,Gew %Ausgabe1%,Ausb %Las%"  
powershell -EP Bypass -C "$content = Get-Content -LiteralPath '%Quelle%';$content[60] = '%Ausgabe%';$content | Set-Content -LiteralPath '%Quelle%'"  
Grüße Uwe
Tulskie
Tulskie 03.08.2022 aktualisiert um 14:22:34 Uhr
Goto Top
Hallo Uwe,
das ist ja mal genial.
Macht genau das was es soll.
Ich habe zwar noch nicht genau verstanden was passiert, aber das schaue ich mir noch mal genauer an.
Hab bisher ja noch nichts mit Powershell zu tun gehabt.
Allerbesten Dank für deine Hilfe.

Grüße Tulskie
colinardo
colinardo 03.08.2022 aktualisiert um 14:23:46 Uhr
Goto Top
Zitat von @Tulskie:
Ich habe zwar noch nicht genau verstanden was passiert, aber das schaue ich mir noch mal genauer an.
Hab bisher ja noch nichts mit Powershell zu tun gehabt.
Dann wirst du hier schlauer face-wink.
Powershell Leitfaden für Anfänger

Im Endeffekt macht der Code nichts anderes als den Inhalt deiner Datei einzulesen, Zeile 61 des Inhalts durch den Inhalt deiner Variablen zu ersetzen und das ganze wieder in die gleiche Datei zurückzuschreiben.

Grüße Uwe
Tulskie
Tulskie 03.08.2022 um 15:10:36 Uhr
Goto Top
Genau das soll er machen und zwar ohne etwas anderes an der Datei zu verändern außer der Zeile 61.
In Batch ist das nicht so einfach alle Zeichen so zu belassen wie sie sind.
Hinterher sah die Datei immer anders aus wie vorher. Da diese aber eine Grundlage für eine optische Anzeige ist, war das nicht so toll. Daher auch mein kleiner Ausflug nach Powershell face-smile

Gruß Tulskie