Ajouter un mot en début de ligne spécifique

Fermé
ulfheonar - 14 juin 2018 à 14:02
 ulfheonar - 25 juin 2018 à 08:29
Bonjour,

Je souhaiterai commenter (en ajoutant une dièse en début de ligne) automatiquement des lignes contenant des lettres précise dans un fichier ini.

Par exemple je souhaiterai commenter une ligne qui contient les lettres "mysql", la ligne peut donc contenir le mot "mysql_cluster" ou encore "variable_mysql"..

La seule chose que j'arrive à faire actuellement c'est de supprimer les lignes en question avec la commande ci-dessous, je n'ai pas trouvé mieux :(

Type %fichier% |Findstr /v "mysql" > %ftemp%


Si vous avez des idées je suis preneur,

Merci.
A voir également:

1 réponse

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907
14 juin 2018 à 20:12
Bonjour,

Essaie comme ça :

for /f "usebackq delims=" %%A in ("%fichier%") do (
echo %%A | findstr "mysql" && echo # %%A >> %ftemp% || echo %%A >> %ftemp%
)


0
Bonjour barnabe,

Merci beaucoup cela fonctionne bien en effet !

le usebackq est nécessaire pour ajouter un guillemet derrière le delims afin de préciser que le caractère délimiteur c'est le saut de ligne c'est ça ?

Je demande car j'essais de comprendre votre code et souhaiterai que les sauts de ligne soit également insérés dans le fichier texte de destination mais je n'y arrive pas après plusieurs essais infructueux.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907 > ulfheonar
16 juin 2018 à 07:42
Le usebackq sert à indiquer à la boucle FOR qu'il s'agit d'un fichier ("%fichier%") et pas d'une chaine de caractères.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907 > barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024
Modifié le 16 juin 2018 à 07:52
Voilà la modif que tu souhaites :

for /f "usebackq delims=" %%A in ("%fichier%") do (
if not defined %%A (echo. >> %ftemp%)
echo %%A | findstr "mysql" && echo # %%A >> %ftemp% || echo %%A >> %ftemp%
)
0
Bonjour Barnabe,
Merci pour l'explication je comprend mieux pourquoi ma variable correspondait au nom du chemin du fichier plutôt qu'à l'intérieur sans le usebackq.

Merci pour la modif !
If not defined ne correspond pas tout à fait à mon besoin car il met un saut de ligne a chaque ligne et je souhaiterai un saut de ligne uniquement lorsque sur le fichier source il y en a un.

J'ai modifié le script afin qu'il n'y ait pas de saut de ligne lorsque la ligne commence par un #, l'idéal serait qu'il fasse un saut de ligne lorsque la ligne commence par un caractère vide mais je ne trouve pas comment faire.


SETLOCAL ENABLEDELAYEDEXPANSION
for /f "usebackq delims=" %%A in (%fichier%) do (
set firstchar=%%A
set firstchar=!firstchar:~0,1!
if !firstchar! EQU # echo. >> %ftemp%
echo %%A | findstr "mysql" && echo # %%A >> %ftemp% || echo %%A >> %ftemp%
)
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907 > ulfheonar
Modifié le 21 juin 2018 à 05:47
Essaie comme ça :
if "A!firstchar!A"=="A A" echo. >> %ftemp%
0