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

ulfheonar -  
 ulfheonar -
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 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
Bonjour,

Essaie comme ça :

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


0
ulfheonar
 
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 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > ulfheonar
 
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 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
ulfheonar
 
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 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > ulfheonar
 
Essaie comme ça :
if "A!firstchar!A"=="A A" echo. >> %ftemp%
0