Remplacer une ligne dans un fichier
Résolu
Ka-El
Messages postés
260
Date d'inscription
Statut
Membre
Dernière intervention
-
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je vous présente mon problème.
Voilà j'ai un fichier texte composé de plusieurs lignes.
L'une d'entre elles se présente ainsi:
if NOT '%x_direction%' == 'I' goto FIN
Et mon but serait de la remplacer par la formule suivante:
if NOT '&DIRECT' == 'RECV' goto FIN
j'ai essayé plein de trucs, mais je n'arrive pas à gérer les espaces qui entourent le "=="
Est-ce quelqu'un aurait une idée ?
Merci d'avance pour votre aide
K
Je vous présente mon problème.
Voilà j'ai un fichier texte composé de plusieurs lignes.
L'une d'entre elles se présente ainsi:
if NOT '%x_direction%' == 'I' goto FIN
Et mon but serait de la remplacer par la formule suivante:
if NOT '&DIRECT' == 'RECV' goto FIN
j'ai essayé plein de trucs, mais je n'arrive pas à gérer les espaces qui entourent le "=="
Est-ce quelqu'un aurait une idée ?
Merci d'avance pour votre aide
K
A voir également:
- Remplacer une ligne dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
5 réponses
Salut,
Je ne vois pas de problème d'espace, le seul problème que je vois est la présence de l'esperluette & qui est un caractère spécial et qui doit donc être échappé :
https://www.robvanderwoude.com/escapechars.php
Je ne vois pas de problème d'espace, le seul problème que je vois est la présence de l'esperluette & qui est un caractère spécial et qui doit donc être échappé :
https://www.robvanderwoude.com/escapechars.php
Hello Barnabe,
En fait, j'essaye de faire la manip à l'aide d'une solution que tu m'avais précédemment communiqué.
Mais je suis peut être sur une mauvaise piste ?
Sur mon essai ci-dessus, le 1er call est OK
En revanche, pour le 2nd ça ne donne rien... Enfin là je tentais un peu à l'arrache...
je ne vois pas trop comment faire et si surtout je suis pas dans l'erreur en adoptant cette méthode.
A ton avis ?
K
En fait, j'essaye de faire la manip à l'aide d'une solution que tu m'avais précédemment communiqué.
Mais je suis peut être sur une mauvaise piste ?
for %%E in (*.*) do (
for /f "skip=2 tokens=1,* delims=]" %%A in ('find /V "" /N "%%~E"') do (
set "string=%%~B"
call:substitution "%%%%x_direction%%%%" DIRECT
call:substitution "%%%== ^'I%%%" == 'RECV'
echo.!string!
echo.!string!>> "%%~E"
)
del /f "%%~E"
)
:substitution
if not "!string!"=="" (set "string=!string:%~1=&%2!")
Sur mon essai ci-dessus, le 1er call est OK
En revanche, pour le 2nd ça ne donne rien... Enfin là je tentais un peu à l'arrache...
je ne vois pas trop comment faire et si surtout je suis pas dans l'erreur en adoptant cette méthode.
A ton avis ?
K
Ben mince Barnabe, j'ai beau mettre des double-quotes partout, le script ne change aucunement la ligne.
J'ai tenté tout ça:
Et d'autres choses...
Il n'y aurait pas un autre aspect à revoir dans le script ?
J'ai tenté tout ça:
call:substitution "%%%" == ^'I"%%%" "== 'RECV"
call:substitution "%%%"== ^'I^'"%%%" == 'RECV'
call:substitution "%%%'I'%%%" "== 'RECV"
call:substitution "%%%" 'I' "%%%" "== 'RECV'"
Et d'autres choses...
Il n'y aurait pas un autre aspect à revoir dans le script ?
Est-ce que c'est mieux comme ça :
for %%E in (*.*) do (
for /f "skip=2 tokens=1,* delims=]" %%A in ('find /V "" /N "%%~E"') do (
set "string=%%~B"
call:substitution "'%x_direction%'" "'&DIRECT'"
call:substitution "'I' goto FIN" "'RECV' goto FIN"
echo.!string!
echo.!string!>> "%%~E"
)
del /f "%%~E"
)
:substitution
if not "!string!"=="" (set "string=!string:%~1=%~2!")
Ah oui beaucoup mieux ! :-)
En revanche, j'arrive pas à soustraire les guillemets dans le résultat:
if NOT '&DIRECT' == "'RECV' goto FIN"
En revanche, j'arrive pas à soustraire les guillemets dans le résultat:
if NOT '&DIRECT' == "'RECV' goto FIN"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question