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-Key: 3533231820

Url: https://administrator.de/contentid/3533231820

Printed on: April 26, 2024 at 22:04 o'clock

Member: colinardo
Solution colinardo Aug 03, 2022 updated at 12:24:04 (UTC)
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
Member: Tulskie
Tulskie Aug 03, 2022 updated at 12:22:34 (UTC)
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
Member: colinardo
colinardo Aug 03, 2022 updated at 12:23:46 (UTC)
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
Member: Tulskie
Tulskie Aug 03, 2022 at 13:10:36 (UTC)
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