Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
879 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème pour modifier la valeur d'une ligne dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème pour modifier la valeur d'une ligne dans un fichier

n°2005730
CARL KEATO​N
Posté le 29-06-2010 à 14:42:55  profilanswer
 

Je souhaite, à l'aide d'un batch, modifier le contenu d'un fichier ini avant le lancement de l'application qui lui est liée
 
apparté : le soft est msnbuster, qui me sert à limiter le temps d'utilisation du pc pour les enfants
Pourquoi ce batch alors que le soft permet de définir des tranches horaires journalières, et le nombre d'heures au quotidien ?
Et bien dans le cas ou, ponctuellement, nous souhaitons limiter exceptionnellement de façon differente pour un certain jour
exemple : lundi =180min allouées mais exceptionnellement ils n'auront que 30min

 
Je souhaite donc lire le fichier MSNBUSTER.INI, trouver la ligne correspondante au jour en cours (exemple J2) et modifier la valeur après "=" qui est, par défaut à "180".
 
Fichier MSNBUSTER.INI

Code :
  1. MAXDURATION_J1=180 ;
  2. NBTIMESLOTS1=1
  3. STARTHOUR_J10=6
  4. STARTMINS_J10=0
  5. STOPHOUR_J10=22
  6. STOPMINS_J10=0
  7. MAXDURATION_J2=180 ;
  8. NBTIMESLOTS2=1
  9. STARTHOUR_J20=6
  10. STARTMINS_J20=0
  11. STOPHOUR_J20=22
  12. STOPMINS_J20=0
  13. MAXDURATION_J3=180 ;
  14. NBTIMESLOTS3=1
  15. STARTHOUR_J30=6
  16. STARTMINS_J30=0
  17. STOPHOUR_J30=22
  18. STOPMINS_J30=0


 
Batch que j'ai adapté, sans succès :(

Code :
  1. @ECHO OFF
  2. SET /P timer=temps?=
  3. SET valeur1=MAXDURATION_J2
  4. FOR /F "delims=" %%A IN (msnbuster.ini) DO (
  5.     SET Text=%%A
  6.     CALL :Replace
  7. ) >>msnbuster.ini
  8. GOTO End
  9. :Replace
  10. CALL SET NewText=%%Text:%valeur1%=MAXDURATION_J4=%timer%%%
  11. ECHO %NewText%
  12. :End


 
Il ajoute bien la valeur à la bonne ligne mais il laisse l'ancienne valeur après !

Code :
  1. MAXDURATION_J1=180 ;
  2. NBTIMESLOTS1=1
  3. STARTHOUR_J10=6
  4. STARTMINS_J10=0
  5. STOPHOUR_J10=22
  6. STOPMINS_J10=0
  7. MAXDURATION_J2=30=180 ;
  8. NBTIMESLOTS2=1
  9. STARTHOUR_J20=6
  10. STARTMINS_J20=0
  11. STOPHOUR_J20=22
  12. STOPMINS_J20=0
  13. MAXDURATION_J3=180 ;
  14. NBTIMESLOTS3=1
  15. STARTHOUR_J30=6
  16. STARTMINS_J30=0
  17. STOPHOUR_J30=22
  18. STOPMINS_J30=0


 
Alors que le bon résultat devait être

Code :
  1. MAXDURATION_J2=30

;
 
Avez-vous une idée car je tourne en rond avec des tests non concluants dans tous les sens :(


Message édité par CARL KEATON le 29-06-2010 à 15:55:28
mood
Publicité
Posté le 29-06-2010 à 14:42:55  profilanswer
 

n°2005797
CARL KEATO​N
Posté le 29-06-2010 à 15:54:05  profilanswer
 

J'arrives bien à selectionner la valeur à modifier, mais comment la modifier ?
 

Code :
  1. for /f "tokens=2 delims=J4;" %%a in ('type msnbuster.ini ^| findstr "MAXDURATION_J4"') do @echo %%a


Message édité par CARL KEATON le 29-06-2010 à 15:54:31
n°2005858
aigles
Posté le 29-06-2010 à 19:41:05  profilanswer
 

Quelque chose comme ça ?

Code :
  1. @ECHO OFF
  2. SET ini_file=msnbuster.ini
  3. SET wrk_file=%ini_file:.=_%.wrk
  4. SET /P jour=jour?=
  5. SET /P timer=temps?=
  6. SET param=MAXDURATION_J%jour%
  7. IF EXIST %wrk_file% DEL /F %wrk_file%
  8. FOR /F "delims== tokens=1,2" %%A IN (%ini_file%) DO (
  9.    CALL :Replace %%A %%B
  10. ) >>%wrk_file%
  11. MOVE /Y %wrk_file% %ini_file%
  12. GOTO :EOF
  13. :Replace
  14.    IF "%1" == "%param%" (
  15.           ECHO %1=%timer% ;
  16.    ) ELSE ECHO %1=%2
  17.    GOTO :EOF

Ce qui donne :

>type msnbuster.ini
MAXDURATION_J1=180
NBTIMESLOTS1=1
STARTHOUR_J10=6
STARTMINS_J10=0
STOPHOUR_J10=22
STOPMINS_J10=0
MAXDURATION_J2=123 ;
NBTIMESLOTS2=1
STARTHOUR_J20=6
STARTMINS_J20=0
STOPHOUR_J20=22
STOPMINS_J20=0
MAXDURATION_J3=180
NBTIMESLOTS3=1
STARTHOUR_J30=6
STARTMINS_J30=0
STOPHOUR_J30=22
 
>msnbuster
jour?=2
temps?=222
 
>type msnbuster.ini
MAXDURATION_J1=180
NBTIMESLOTS1=1
STARTHOUR_J10=6
STARTMINS_J10=0
STOPHOUR_J10=22
STOPMINS_J10=0
MAXDURATION_J2=222 ;
NBTIMESLOTS2=1
STARTHOUR_J20=6
STARTMINS_J20=0
STOPHOUR_J20=22
STOPMINS_J20=0
MAXDURATION_J3=180
NBTIMESLOTS3=1
STARTHOUR_J30=6
STARTMINS_J30=0
STOPHOUR_J30=22
 
>


 
Jean-Pierre.

n°2005898
CARL KEATO​N
Posté le 30-06-2010 à 00:39:09  profilanswer
 

tout simplement grandiose  !!!!!!!!!!!!!!!!!!!
 
Merci bcp !!!!!!!!!!!!!!!!
 
chapeau bas Monsieur :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème pour modifier la valeur d'une ligne dans un fichier

 

Sujets relatifs
surligner totalité d'une ligne htmlSuppression du fichier desktop.htt par VBS
Problème script avec joomlaProblème CSS : Espace non désiré d'origine inconnue sous les images
lancer une classe depuis un fichier batSuppression valeur dans registre suivant une chaine de caractère
[Resolu] Probleme image en bordure de bloc !Copie automatique fichier excel à heure fixe
problème au niveau de struts-config.xml 
Plus de sujets relatifs à : Problème pour modifier la valeur d'une ligne dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR