Echo de la Chaîne avec des Guillemets pour le fichier de Sortie à l'aide de commandes Windows

Je suis d'essayer de réécrire un fichier de configuration à l'aide d'un fichier de commandes Windows.
Je suis en parcourant les lignes du fichier et recherchez la ligne que je veux remplacer avec une nouvelle ligne.

J'ai une "fonction" qui écrit la ligne dans le fichier

: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 

Le problème est que lorsqu' %Texte% est une chaîne de caractères intégré avec des guillemets.
Puis il échoue. Éventuellement, il y a d'autres personnages qui serait la cause de l'échec aussi.
Comment puis-je obtenir cela être capable de travailler avec tout le texte trouvé dans le fichier de configuration?

Si vous voulez qu'il fonctionne de manière fiable, ne pas utiliser de lot - utiliser powershell ou vbscript, ou un autre langage de script.
Ce serait génial, mais je n'ai pas vraiment cela comme une option.
En fait le problème semble être qui guillemets incorporé dans l'écho ici: echo %Texte% | findstr /C:"%markerstr%" 1>nul
Il s'étend à quelque chose comme: echo #bla bla "COMME | findstr /C:"bla" (Les guillemets provoque des problèmes
À l'aide d'une expansion retardée permettra de résoudre ce problème particulier, je pense.

OriginalL'auteur George Hernando | 2012-10-11