Echo der String mit Doppelten Anführungszeichen Ausgabe-Datei mithilfe der Windows-Batch

Versuche ich zu umschreiben, eine Konfigurationsdatei mithilfe einer Windows-Batch-Datei.
Ich bin die Schleife durch die Zeilen der Datei und suchen Sie die Zeile, die ich ersetzen wollen mit einer neuen Zeile angegeben.

Habe ich eine "Funktion", schreibt 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 eine Zeichenkette mit eingebetteten doppelten Anführungszeichen.
Dann schlägt es fehl. Möglicherweise gibt es andere Zeichen, die dazu führen würde, dass es zu scheitern, zu.
Wie kann ich diese arbeiten zu können, werden alle Texte gefunden, in die Konfiguration-Datei?

  • Wenn Sie möchten, dass es zuverlässig funktioniert, nicht verwenden Sie batch - verwenden von powershell oder vbscript oder einer anderen scripting-Sprache.
  • Das wäre toll, aber ich glaube wirklich nicht, dass als option.
  • Tatsächlich scheint das problem zu sein, die doppelte Anführungszeichen eingebettet in das echo hier: echo %Text% | findstr /C:"%markerstr%" 1>nul
  • Es wird erweitert, um so etwas wie: echo #blah blah on " | findstr /C:"blabla" -- Das doppelte Anführungszeichen bewirkt, dass Probleme
  • Mit verzögerte Erweiterung wird die Lösung für das spezielle problem, denke ich.
Schreibe einen Kommentar