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.
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
Vous devez vous connecter pour publier un commentaire.
Essayez de remplacer tous les
"
dansText
avec^"
.^
est un caractère d'échappement donc, le"
seront traités comme des caractèresvous pouvez essayer ce qui suit:
D'autres caractères qui pourrait provoquer des erreurs (vous pouvez résoudre ce problème avec la solution ci-dessus) sont:
OriginalL'auteur Ofir Luzon
Dans un windows lot de commandes () les guillemets sont de s'enfuir avec
^
sur la norme de la ligne de commande, MAIS avec un double double guillemet à l'intérieur d'une double chaîne de caractères entre guillemets(remarque: la deuxième ligne de produire l'externe entourant de guillemets doubles dans la sortie aussi)
OriginalL'auteur NeronLeVelu