Vous pouvez simplement utiliser le texte que vous souhaitez ajouter suivi de votre variable en général.
C:\>set MY_VAR=Hello world!
C:\>echo #%MY_VAR%
#Hello world!
C:\>set MY_VAR=#%MY_VAR%
C:\>echo %MY_VAR%
#Hello world!
Si vous faites juste l'écho, c'est bien. echo #%%j
fera ce que vous avez besoin. Mais si vous voulez définir la ligne à une variable, vous devez enable delayed expansion. Ajoutez setlocal ENABLEDELAYEDEXPANSION
au début de votre fichier, puis entourez vos variables avec !
au lieu de %
. Par exemple (et l'avis que j'ai ajouté delims=
pour mettre toute la ligne dans %%j
au lieu du premier mot sur la ligne):
@echo off
setlocal ENABLEDELAYEDEXPANSION
set LINE=
for /f "delims=" %%j in (CMakeLists.txt) do (
set LINE=%%j
if "%%j"=="Extensions AntTweakBar" (
set LINE=#%%j
)
if "%%j"=="Extensions Inspection" (
set LINE=#%%j
)
if "%%j"=="Extensions InspectionBar" (
set LINE=#%%j
)
echo !LINE!
)
Compte tenu de ce fichier d'entrée:
Extensions AntTweakBar
some text
Extensions Inspection
Extensions What?
some more text
Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text
Le script ci-dessus produit cette sortie:
C:\>comment.bat
#Extensions AntTweakBar
some text
#Extensions Inspection
Extensions What?
some more text
#Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text
Et bien sûr, la suppression @echo off
vous aidera à des problèmes de débogage. Mais tout cela étant dit, vous êtes à la limite de ce que vous pouvez accomplir avec le traitement de chaîne de traitement par lots. Si vous souhaitez toujours utiliser des commandes par lots, vous devrez peut-être commencer à écrire des lignes dans des fichiers temporaires et à utiliser findstr
avec une expression régulière.
Cela peut être fait en chauve-souris ... mais pourquoi l'avez-vous choisi? –
Pouvez-vous fournir un exemple de fichier afin que nous puissions voir s'il y a un formatage de texte à conserver, par exemple, des lignes blanches, des indentations, etc. ou pouvez-vous affirmer avec certitude que ce n'est pas un problème? ? –
Ceci peut facilement être accompli dans le vieux DOS simple. Je l'ai fait 1000 fois sinon plus. Je reviendrai sur cette question ce soir - Noël est arrivé! –