Batch - Anführungszeichen in Variable
Hallo Forum-Gemeinde,
komm einfach nicht dahinter und hoffentlich kann mir jemand helfen.
Es geht darum, einen oder mehrere beliebige Sätze in eine txt-Datei zu schreiben.
Das Klappt auch soweit.
Nun sollen zum ersten einmal die drei Zeichen "## entfernt werden (mit Anführungszeichen)
Desweiteren auch diese Zeichen ##"
Und ja, anfangs muß ich die Satzzeichen mit rein schreiben in die txt-Datei.
Hier die Batch:
@echo OFF
setLocal EnableExtensions EnableDelayedExpansion
for %%t in (
"##Dieser erste Text soll bleiben##"
"##Dieser zweite Text soll bleiben##"
) do echo.%%t >>erstellte_Textdatei.txt
echo hier_1 && pause
set "search=^"##"
:: -- Hier muß der Fehler liegen: Es soll "## entfernt werden (mit dem Anführungszeichen) --
set "replace="
set "t=temp.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("erstellte_Textdatei.txt") do set "Line=%%i" && set "Line=!Line:%search%=%replace%!" && >>"%t%" echo !Line!
move "%t%" "erstellte_Textdatei.txt"
echo hier_2 && pause
komm einfach nicht dahinter und hoffentlich kann mir jemand helfen.
Es geht darum, einen oder mehrere beliebige Sätze in eine txt-Datei zu schreiben.
Das Klappt auch soweit.
Nun sollen zum ersten einmal die drei Zeichen "## entfernt werden (mit Anführungszeichen)
Desweiteren auch diese Zeichen ##"
Und ja, anfangs muß ich die Satzzeichen mit rein schreiben in die txt-Datei.
Hier die Batch:
@echo OFF
setLocal EnableExtensions EnableDelayedExpansion
for %%t in (
"##Dieser erste Text soll bleiben##"
"##Dieser zweite Text soll bleiben##"
) do echo.%%t >>erstellte_Textdatei.txt
echo hier_1 && pause
set "search=^"##"
:: -- Hier muß der Fehler liegen: Es soll "## entfernt werden (mit dem Anführungszeichen) --
set "replace="
set "t=temp.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("erstellte_Textdatei.txt") do set "Line=%%i" && set "Line=!Line:%search%=%replace%!" && >>"%t%" echo !Line!
move "%t%" "erstellte_Textdatei.txt"
echo hier_2 && pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 562680
Url: https://administrator.de/forum/batch-anfuehrungszeichen-in-variable-562680.html
Ausgedruckt am: 04.04.2025 um 05:04 Uhr
2 Kommentare
Neuester Kommentar
Moin,
bitte immer Code-tags für das Posten von Code benutzen.
Damit setzt du die Variable erst gar nicht - aber: das musst du auch gar nicht. Der Code ist schlicht unnütz und kann weg.
Du brockst dir das Ganze quasi selbst ein, indem du beim setzen von Variablen immer Anführungsstrichen verwendest.
Genau wie du dann hier
ein Escapezeichen vor die Anführungsstriche setzt, müsstest du das auch hier tun
was jedoch so nicht möglich ist.
Lass die Anführungszeichen beim setzen von Variablen weg, dann musst du auch nicht escapen und dann funktioniert es auch.
Gruß Thomas
bitte immer Code-tags für das Posten von Code benutzen.
Damit setzt du die Variable erst gar nicht - aber: das musst du auch gar nicht. Der Code ist schlicht unnütz und kann weg.
Du brockst dir das Ganze quasi selbst ein, indem du beim setzen von Variablen immer Anführungsstrichen verwendest.
Genau wie du dann hier
set "search=^"##"
set "Line=!Line:%search%=%replace%!"
Lass die Anführungszeichen beim setzen von Variablen weg, dann musst du auch nicht escapen und dann funktioniert es auch.
@echo off
setLocal EnableDelayedExpansion
for %%t in (
"##Dieser erste Text soll bleiben##"
"##Dieser zweite Text soll bleiben##"
) do echo.%%t >>erstellte_Textdatei.txt
echo hier_1 && pause
set search="##
set t=temp.tmp
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("erstellte_Textdatei.txt") do (
set Line=%%i
set Line=!Line:%search%=!
>>"%t%" echo !Line!
)
move "%t%" "erstellte_Textdatei.txt"
echo hier_2 && pause
Gruß Thomas