solo75010 Posté(e) le 7 juin 2010 Partager Posté(e) le 7 juin 2010 Salut à tous, Je finis par me tourner vers vous, vu le temps que j'ai passé sur ce script en lisant de nombreux tuto, en tentant de trouver la réponse à travers différents forums...bref en vain ! Pourtant le besoin et relativement simple Pour le bon fonctionnement d'une application, je souhaite que l'utilisateur double clic sur le .bat ce qui vient éditer un fichier de configuration (toto.ini) pour modifier la ligne contenant : Machine:Username="Spectateur" par Machine:Username="%username%" Puis enregistre le fichier de configuration (toto.ini si possible à la même place) et lance l'exécutable. Durant mes différentes recherches j'ai bien vu que l'on pouvait éditer une variable très facilement, mais je n'ai pas du tout compris comment éditer un fichier. (pas d'équivalent à sed ) Auriez-vous l'amabilité de m'aiguiller, je vous remercie par avance cher tous Dites moi si vous avez besoins de plus de détails. (Je ne suis pas contre du vbs, mais vu le temps que j'ai passé en batch j'aimerai bien comprendre en batch, mais je ne vais pas faire la fine bouche si vous me proposez la solution en vbs, l'idée est surtout de ne pas utiliser d'outil tiers) Lien vers le commentaire Partager sur d’autres sites More sharing options...
IFRIC4 Posté(e) le 7 juin 2010 Partager Posté(e) le 7 juin 2010 Salut, C'est une astuce, mais qui permet peut-être de régler ton problème : tu peux partir d'un fichier ini template sans la définition de la variable et y concaténer la définition de la variable copy template.ini toto.ini echo "Username=\"%username%\"" >> toto.ini Lien vers le commentaire Partager sur d’autres sites More sharing options...
solo75010 Posté(e) le 8 juin 2010 Auteur Partager Posté(e) le 8 juin 2010 Merci pour ta réponse, cela me fait une astuce en plus dans mon bagage Par contre l'avantage est que je peux ajouter ce que je souhaite en fin de fichier, mais j'ai besoin de supprimer la ligne où se trouve le précédent nom. Également le fichier .ini n'est pas généré par moi mais une application et je sais que ce fichier contient forcément la ligne Machine:Username="Spectateur" En plus cette ligne est unique et n'a pas vocation à être changée, alors que ça place dans le fichier peut (peut-être) elle changer (actuellement en ligne 105 sinon). Si possible on peut simplement partir sur le fait de changer Spectateur, qui lui aussi est seul. Lien vers le commentaire Partager sur d’autres sites More sharing options...
IFRIC4 Posté(e) le 8 juin 2010 Partager Posté(e) le 8 juin 2010 Il faut parser ton fichier avec une boucle FOR. Je te mets en gros ce qu'il faut faire. @echo off SET input=test.ini SET output=out.ini :: Cette boucle FOR permet de récupérer les lignes de la forme %%a=%%b ou %%a :: Ex: la ligne toto=value sera parsée en %%a="toto" et %%b="value" :: la ligne [TEST] sera parsée en %%a="[TEST]" et %%b="" FOR /F "tokens=1,* delims==" %%a IN (%input%) DO ( IF "%%b"=="" ( :: cas où il n'y a pas de = dans la ligne, on renvoie le premier token echo %%a >> %output% ) ELSE ( IF "%%a"=="toto" ( :: cas toto=truc : on remplace par toto=ce qu'on veut echo %%a=newtoto >> %output% ) ELSE ( :: autres cas bidule=machin, on réécrit bidule=machin echo %%a=%%b >> %output% ) ) ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
solo75010 Posté(e) le 8 juin 2010 Auteur Partager Posté(e) le 8 juin 2010 Un grand merci, si avec ça j'arrive pas à finir mon besoin, je vais être la risée du monde info Je posterai tout de même la solution qui convient à mon besoin, si ça peut mâcher le boulot à quelqu'un d'autres. Merci pour ton aide et bonne fin de journée. Comme promis voici la solution à mon besoin (enfin surtout grâce aux bonnes pistes ou plutôt travail pratiquement tout mâché de IFRIC4). @echo off SET input=test.ini SET output=out.ini FOR /F "tokens=1,*" %%a IN (%input%) DO ( ::si la ligne de mon fichier test.ini est égale à Machine:Username="Spectateur" :: alors je la remplace par une nouvelle ligne incluant l'utilisateur de la session actuelle IF "%%a"=="Machine:Username="Spectateur"" ( echo Machine:Username="%username%" >> %output% ::sinon je continue de remplir mon nouveau fichier avec les même valeurs ) ELSE ( echo %%a >> %output% ) ) :: je supprime mon fichier d'origine del /Q test.ini :: je renomme mon nouveau fichier avec le nom de l'ancien ren out.ini test.ini ::je démarre mon application start monappli.exe Voilà, j'espère que ce script pourra aider ou en inspirer certains. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.