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 :

[Batch] Remplacer une valeur déjà existante dans un fichier texte


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2023
    Messages : 4
    Par défaut [Batch] Remplacer une valeur déjà existante dans un fichier texte
    Bonjour à tous !

    Débutant dans le domaine Batch, je me suis vu a faire un script afin de connaître la version actuelle de Windows.


    Je créé donc un fichier temporaire via cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ver >c:\Temp\Windowsver.txt
    puis je récupère dans un fichier texte les données suivantes : Nom Du PC;Date auquel le script à enregistré cette dernière; l'heure; la version de Windows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FOR /f "tokens=4 delims=] " %%a IN (c:\Temp\Windowsver.txt) DO set VAR=%%a
    echo %COMPUTERNAME%;%DATE%;%TIME%;%VAR% >> \\VM-FICH\Installation\Verwindows\VerWindows.txt
    del c:\Temp\Windowsver.txt
    exit
    Ce qui me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ver >c:\Temp\Windowsver.txt
    FOR /f "tokens=4 delims=] " %%a IN (c:\Temp\Windowsver.txt) DO set VAR=%%a
    echo %COMPUTERNAME%;%DATE%;%TIME%;%VAR% >> \\VM-FICH\Installation\Verwindows\VerWindows.txt
    del c:\Temp\Windowsver.txt
    exit

    Jusque là, tout va bien. Mais problème : ce script enregistre à la suite les nouvelles données après chaque log des ordinateurs du parc. Seulement, j'aimerai que ce dernier puisse faire un check dans le fichier VerWindows.exe du Nom du PC. Si celui-ci existe déjà, alors effacer puis réécrire la nouvelle donnée récupérer précédemment. Sinon juste ajouter celle dernière à la suite du fichier txt.

    J'ai cherchais un peu sur les forums, j'ai découvert le FIND / FINDSTR. J'ai testé avec ceci :

    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
    18
    ver >c:\Temp\Windowsver.txt
    FOR /f "tokens=4 delims=] " %%a IN (c:\Temp\Windowsver.txt) DO set VAR=%%a
    
    echo %COMPUTERNAME%;%DATE%;%TIME%;%VAR% >> \\VM-FICH\Installation\Verwindows\VerWindows.txt
    
    echo > \\VM-FICH\Installation\Verwindows\VerWindows2.txt
    
    for /f "delims=" %%C in ('type \\VM-FICH\Installation\Verwindows\VerWindows.txt') do (
    
    find /c "%%C" \\VM-FICH\Installation\Verwindows\VerWindows2.txt
    if errorlevel==1 echo %%C >> \\VM-FICH\Installation\Verwindows\VerWindows2.txt
    
    )
    
    del c:\Temp\Windowsver.txt
    
    pause
    exit
    mais ce dernier ne fait simplement que copier l'intégralité du VerWindows sur VerWindows2.

    D'avance merci pour votre aide !

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 218
    Par défaut
    Un truc simple

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @echo off
    cls
     
    set "file=\\VM-FICH\Installation\Verwindows\VerWindows.txt"
    set "filetmp=C:\Windows\Temp\VerWindows.txt"
     
    FOR /f "tokens=4 delims=] " %%a IN ('ver') DO set version=%%a
     
    findstr /V /I /B "%COMPUTERNAME%;" "%file%">"%filetmp%"
    echo %COMPUTERNAME%;%date%;%version%>>"%filetmp%"
     
    copy "%filetmp%" "%file%" /Y >nul
    del "%filetmp%" /A /F /Q
     
    pause

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2023
    Messages : 4
    Par défaut Simple en effet !
    Bonjour @ericlm128 et grand merci, tout est opérationnel avec les ordinateurs de la maison. Je ferai un test début de semaine sur le lieu de travail afin de confirmé à 100% le fonctionnement & faire passer le sujet en "clos" !

    Encore grand merci pour cette simplicité !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2023
    Messages : 4
    Par défaut Réinitialisation du fichier texte
    Bonjour à tous !

    Après quelques semaines de test, le code fonctionne parfaitement après la mise en place dans la GPO. Mais problème, sans aucune explication, le fichier texte se trouvant dans mon réseau VM-FICH se réinitialise ce qui ne me permet pas de connaitre réellement l'intégralité de mon parc .

    Après plusieurs recherche dans différente GPO, aucune d'elle n'écrit dans ce même fichier (ce qui aurait pu être la raison de la réinitialisation).

    Cette GPO demande uniquement de lancer ce script lors du démarrage du poste et retester une 10ene de fois si celle-ci ne se lance pas la première fois.

    Est-il possible que, lorsque plusieurs postes souhaitent écrire en même temps dans le fichier, ce dernier se réinitialise ? (c'est la conclusion auquel je suis arrivé)
    Si c'est le cas, y a t-il une solution à ce problème ? (je devrais avoir ~ 1000 postes inscrits dans le fichier qui se lance à des heures différentes de la journée mais une planification pour leur inscription se fait par "groupe" chaque soir)


    Je remet le code au besoin :

    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
    cls
    
    
     
    set "file=\\vm-fich\installation\Verwindows\VerWindowsOK.txt"
    set "filetmp=C:\Temp\VersionDeWin.txt"
    
    
     
    FOR /f "tokens=4 delims=] " %%a IN ('ver') DO set version=%%a
     
    findstr /V /I /B "%COMPUTERNAME%;" "%file%">"%filetmp%"
    echo %COMPUTERNAME%;%date%;%time%;%version%>>"%filetmp%"
     
    copy "%filetmp%" "%file%" /Y >nul
    del "%filetmp%" /A /F /Q

    D'avance merci pour vos éclaircissements / votre aide !

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 218
    Par défaut
    Oui je pense qu'il doit y avoir un problème de concurrence d'accès.
    Pour ma part je préfère créer 1 fichier par poste pour éviter ce phénomène.
    Après il faut les agréger pour les traiter

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2023
    Messages : 4
    Par défaut
    Pour tout cela, tout est déjà fait dans la tâche planifiée.

    Nom : prob1.PNG
Affichages : 225
Taille : 8,7 Ko
    Nom : prob2.PNG
Affichages : 219
Taille : 1,9 Ko
    Nom : prob3.PNG
Affichages : 223
Taille : 2,2 Ko
    Nom : prob4.PNG
Affichages : 217
Taille : 16,4 Ko
    Nom : prob5.PNG
Affichages : 230
Taille : 14,8 Ko

    Tout descend depuis cette GPO. Je vais voir pour faire localement chaque poste et récupérer chaque donnée sur un seul fichier texte. Merci pour la piste !

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

Discussions similaires

  1. [AC-2010] Remplacer une chaine de caractères dans un fichier texte
    Par jpg75014 dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/06/2015, 15h38
  2. Réponses: 0
    Dernier message: 02/09/2014, 12h20
  3. Remplacer une chaine de caractère dans un fichier texte.
    Par Empty_body dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/01/2008, 11h16
  4. Insérer une valeur déjà existante dans une Primary Key
    Par Gosth35 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/12/2007, 23h20
  5. Réponses: 7
    Dernier message: 27/09/2005, 11h54

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