Die Zeichenfolge hat kein Abschlusszeichen - Batch mit mehrzeiligem Powershellbefehl
Hallo,
leider finde ich hier den Fehler nicht, in der Doku finde ich auch nichts. Wer kann mir auf die Sprünge helfen?
Schönen Abend,
leider finde ich hier den Fehler nicht, in der Doku finde ich auch nichts. Wer kann mir auf die Sprünge helfen?
set quelle=%userprofile%\Desktop\Testmuster\muster-2.csv
if exist "%quelle%" goto :prog1
if not exist "%quelle%" goto :EOF
:prog1
powershell -Executionpolicy ByPass -Command "$quelle = '$env:USERPROFILE\Desktop\Testmuster\muster-2.csv';$ziel = '$env:USERPROFILE\Desktop\Testmuster\muster.txt';$csvdata = Import-csv $quelle -Delimiter ';' -Encoding Default;($csvdata | %%{"$($_.'Vorname');$($_.'Name');$($_.'Anschrift');$($_.'neue Plz');$($_.'neuer Ort');"}) -join "" | set-content $ziel
Schönen Abend,
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 341618
Url: https://administrator.de/forum/die-zeichenfolge-hat-kein-abschlusszeichen-batch-mit-mehrzeiligem-powershellbefehl-341618.html
Ausgedruckt am: 09.04.2025 um 15:04 Uhr
11 Kommentare
Neuester Kommentar

Habe ich gerade erst in folgendem Thread beantwortet 
Werte aus CSV in TXT - Powershell
Tipp: Doppelte Anführungszeichen innerhalb von doppelten sind mit Backslash zu "escapen".
Außerdem fehlt dir zusätzlich das "Abschließende" davon
Gruß
Werte aus CSV in TXT - Powershell
Tipp: Doppelte Anführungszeichen innerhalb von doppelten sind mit Backslash zu "escapen".
Außerdem fehlt dir zusätzlich das "Abschließende" davon
Gruß

Selbstverständlich, wenn man mal logisch mitdenkt, und das gilt für die meisten Skript/Programmiersprachen. Denn sonst würde Batch denken das der PS Command hinter dem -join aufhört, soll er ja aber nicht!

Tipp: In Powershell darfst du ja Hochkommas als Stringbegrenzer nutzen, wenns geht, und du keine Variablen im String auflösen musst, also stattdessen diese nutzen:
-join ''

Nö, das tut es nicht, les meinen letzten Post noch mal ganz pingelig in Bezug auf die Variablenauflösung innerhalb von einfachen Hochkommatas! Dann weißt du wieso das so nicht funktionieren kann...
Schade, da schreibt man das extra alles hin, aber keiner liest es
, einfach nur arm...
powershell -Executionpolicy ByPass -Command "((Import-CSV \"$env:USERPROFILE\Desktop\Testmuster\muster-2.csv\" -Delimiter ';' -Encoding Default) | %%{\"$($_.'Vorname');$($_.'Name');$($_.'Anschrift');$($_.'neue Plz');$($_.'neuer Ort')\"}) -join '' | set-content \"$env:USERPROFILE\Desktop\Testmuster\muster.txt\""
Schade, da schreibt man das extra alles hin, aber keiner liest es
Hallo, ich bin neu hier und habe gerade diesen Eintrag von Dir, BibersBaum gefunden,vorher hatte ich mich durch die Doku gekämpft und dann das hier gelesen - die Rettung.
Bei meiner Ausgangs CSV kann das sein, dass bsp. 'neuer Ort' oder 'neues Land' nur manchmal vorhanden ist - warum auch immer.
Jetzt würde ich gerne, damit auch ich den Code nutzen kann, gerne folgendes versuchen. Wenn in der Spalte 'neues Land' eines vorhanden ist, nehme das, sonst (wenn keines vorhanden) schreibe 'Deutschland' als Standardwert.
Bei meiner Ausgangs CSV kann das sein, dass bsp. 'neuer Ort' oder 'neues Land' nur manchmal vorhanden ist - warum auch immer.
Jetzt würde ich gerne, damit auch ich den Code nutzen kann, gerne folgendes versuchen. Wenn in der Spalte 'neues Land' eines vorhanden ist, nehme das, sonst (wenn keines vorhanden) schreibe 'Deutschland' als Standardwert.