IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Remplacer une ligne dans un document .txt/.ini/autre [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Août 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Remplacer une ligne dans un document .txt/.ini/autre
    Bonjour à tous,
    Ça fait un bon moment que je cherche comme stipulé ci-dessus, à remplacer des lignes dans un document texte (.ini en l’occurrence) de façon automatisé, mais fautes de trouvailles probantes, je viens demander votre aide.

    Voici un extrait du document en question (appelons le data.ini)
    [MAIN]
    bGamepadEnable=1
    bCrosshairEnabled=1
    fHUDOpacity=1.0000
    fSkyCellRefFadeDistance=150000.0000
    [GamePlay]
    bShowFloatingQuestMarkers=1
    bShowQuestMarkers=1
    iDifficulty=3
    L'objectif serais de, en fonction d'un chois effectuer plus tôt, changer certaines valeurs dans data.ini mais en laissant tout le reste inchangé, sachant que je ne connais pas l’état actuel ni la longueur de de ces dernières, mais je connais leurs n° de la ligne et le texte qui précède.

    Dans cette partie je souhaiterai remplacer fSkyCellRefFadeDistance=150000.0000 par fSkyCellRefFadeDistance=74200.0000, donc la ligne 5, le problème c'est que mes connaissance en batch sont très limités et je ne sais pas comment procéder une fois l'action choisie, donc vient la question : comment changer cette ligne en particulier ?
    (je crois savoir que l'on procède de même pour des fichiers .ini que .txt, mais je n'en sais pas plus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @ECHO OFF
    
    :menu
    cls
    echo parametres
    echo 1 : fHUDOpacity                2 : bCrosshairEnable
    echo 3 : fSkyCellRefFadeDistance    4 : bGamepadEnable
    set /p menu=
    if %menu% EQU 1 goto hud
    if %menu% EQU 2 goto crosshair
    if %menu% EQU 3 goto sky
    if %menu% EQU 4 goto gamepad
    goto menu
    
    :sky
    cls
    ???
    voila voila, je pense avoir tous dit, j'espère que vous pourrez m'aider

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Voici un exemple simple de remplacement :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
     
    if exist "data_tmp.ini" del /A /Q /F "data_tmp.ini"
    for /f "tokens=* delims==" %%a in (data.ini) do (echo %%a | findstr /I /V /B "fSkyCellRefFadeDistance=" || echo fSkyCellRefFadeDistance=74200.0000)>>"data_tmp.ini"
    move /Y "data_tmp.ini" "data.ini" >nul
     
    pause

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Août 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    ça marche parfaitement, merci beaucoup

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Août 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    après quelques test je viens de me rendre compte que ta solution ajoute des espaces un peut partout dans le document a la fin des lignes, le problème c'est que le logiciel est sensible à ces espaces, y a t'il moyen de s'en débarrasser ?

  5. #5
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Une autre approche bien plus simple dans le traitement que tu peux étudier :


    Pour la récuperation des valeurs dans un ini le plus simple est :

    test.ini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    val1=toto
    val2=tata
    val3=titi
    GetIni.bat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "delims=" %%a in (test.ini) do set #%%a 2>nul
    
    echo Val1 = %#val1%
    echo Val2 = %#val3%
    echo Val3 = %#val3%
    Si tu veux changer val3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set "#val3=NouvelleValeur"
    et la sauvegarde du nouvelle ini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    setlocal enabledelayedexpansion
    
    (for /f "delims=" %%a in ('set #') do (
       set "$NewLigne=%%a"
       echo !$NewLigne:#=!
    ))>NewIni.ini

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Oui excuse moi.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @echo off
     
    if exist "data_tmp.ini" del /A /Q /F "data_tmp.ini"
    for /f "tokens=* delims==" %%a in (data.ini) do (echo %%a|findstr /I /V /B "fSkyCellRefFadeDistance="||echo fSkyCellRefFadeDistance=74200.0000)>>"data_tmp.ini"
    move /Y "data_tmp.ini" "data.ini" >nul
     
    pause

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Août 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    merci pour vos réponses à tous les deux, j'ai retenus la solution de ericlm, je ne comprend pas exactement comment supprimer tous les espaces dans la fonction à régler le problème (j'aurai pensé qu'un seul était à supprimer). la prochaine fois que je me repencherai sur le sujet j’essaierai également la seconde méthode

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Commande pour remplacer une ligne dans un fichier.txt
    Par ludobspp dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 07/11/2013, 08h19
  2. Remplacer une ligne dans fichier txt !
    Par cincap dans le forum Débuter
    Réponses: 13
    Dernier message: 24/09/2013, 12h52
  3. Remplacer une chaîne dans un fichier txt
    Par java_fun dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 11/06/2007, 19h57
  4. suprimmer une ligne dans un fichier .txt
    Par Totuch dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/06/2007, 11h28
  5. Remplacer une ligne dans une fichier
    Par norior dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2006, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo