Ich versuche, eine Konfigurationsdatei mithilfe einer Windows-Batchdatei neu zu schreiben. Ich durchlaufe die Zeilen der Datei und suche nach der Zeile, die ich durch eine bestimmte neue Zeile ersetzen möchte.Echo von String mit doppelten Anführungszeichen in Ausgabedatei mit Windows Batch
Ich habe eine ‚Funktion‘, die die Zeile in die Datei
:AddText %1 %2
set Text=%~1%
set NewLine=%~2%
echo "%Text%" | findstr /C:"%markerstr%" 1>nul
if errorlevel 1 (
if not "%Text%" == "" (
setlocal EnableDelayedExpansion
(
echo !Text!
) >> outfile.txt
) else (
echo. >> outfile.txt
)
) else (
set NewLine=%NewLine"=%
setlocal EnableDelayedExpansion
(
echo !NewLine!
) >> outfile.txt
)
exit /b
Das Problem ist, wenn% Text% ist ein String mit eingebetteten Anführungszeichen schreiben. Dann schlägt es fehl. Möglicherweise gibt es andere Zeichen, die es auch scheitern lassen würden. Wie kann ich dies erreichen, um mit dem gesamten in der Konfigurationsdatei gefundenen Text arbeiten zu können?
Wenn Sie es zuverlässig arbeiten mögen Verwenden Sie keine Batch-Verwendung von Powershell oder VBScript oder einer anderen Skriptsprache. –
Das wäre großartig, aber ich habe das wirklich nicht als Option. –
Eigentlich scheint das Problem darin zu liegen, welche Anführungszeichen in das Echo eingebettet sind: echo% Text% | findstr/C: "% markerstr%" 1> nul –