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 :

script batch basé sur le modèle d'une machine [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut script batch basé sur le modèle d'une machine
    Bonjour,

    Je souhaite intégrer à un script une vérification du modèle de la machine l'exécutant afin de poursuivre avec des instructions différentes selon le modèle.

    Mon exemple :

    la commande suivante donne le modèle : wmic computersystem get modelJ'ai donc cherché pour passer son résultat en variable et ensuite me servir de cette variable pour faire par exemple if %modele% = HP Probook 450 G3 go to pb450g3J'ai trouvé des commandes du style : for /f "delims=" %%i in ('wmic computersystem get model') do Set VrTemp=%%iMais je ne m'en sors pas.

    De plus ma commande wmic renvoie un tableau avec un titre :
    model
    HP Probook...

    Pouvez-vous m'aider à rendre mon script fonctionnel ?

    Merci par avance

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Vous pouvez aussi nous poster votre exemple et
    Voici une subroutine :GetModel <Model>

    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    Call :GetModel Model
    echo Le model de ce PC est : "%Model%"
    pause>nul
    ::*******************************************************************
    :GetModel <Model>
    Rem le paramètre %1 représente la variable qu'on va définir 
    Rem (dans notre cas %1=Model)
    FOR /F "tokens=2 delims==" %%I IN (
      'wmic computersystem get model /format:list 2^>^nul'
    ) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%1=%%A"
    Exit /b
    ::*******************************************************************

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut test
    bonsoir
    désolé pour la balise j'avais oublié ^^

    J'ai testé votre script (copié collé) mais MS DOS me renvoie "la syntaxe de la commande n'est pas correcte.
    Dans la foulée écho %model% renvoie bien ce que je veux mais pourquoi ce message d'erreur ?

  4. #4
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par yakalelo57 Voir le message
    J'ai testé votre script (copié collé) mais MS DOS me renvoie "la syntaxe de la commande n'est pas correcte.
    Dans la foulée écho %model% renvoie bien ce que je veux mais pourquoi ce message d'erreur ?
    Copier et coller le code dans votre notepad et enregistrer le sous le nom par exemple test.bat puis exécuter le par un double clique

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut test
    c'est ce que j'ai fait ^^
    je viens de retester et j'ai toujours le message.

    ensuite j'ai modifié un peu pour adapter à mon besoin (et enlevé la pause au milieu) :

    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
    19
    20
    21
    22
    @echo off
    Call :GetModel Model
    echo Le model de ce PC est : "%Model%"
    
    :GetModel <Model>
    Rem le paramètre %1 représente la variable qu'on va définir 
    Rem (dans notre cas %1=Model)
    FOR /F "tokens=2 delims==" %%I IN (
      'wmic computersystem get model /format:list 2^>^nul'
    ) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%1=%%A"
    
    if %Model% == MS-7A71 goto :MS7A71
    
    echo TOTO
    
    :MS7A71
    echo cool le modele MS-7A71
    goto :eof
    
    :MODELEBIDON
    echo modele bidon
    Celà fonctionne pour que seules les instructions de :MS7A71 soient lancées mais si j'exécute ce dernier il me traite 2 fois les commandes figurant dans :MS7A71 (voir screen)

    Nom : batch.jpg
Affichages : 817
Taille : 70,2 Ko

  6. #6
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Code BAT : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    @echo off
    Call :GetModel Model
    echo Le model de ce PC est : "%Model%"
    if "%Model%"=="MS-7A71" ( 
        goto :MS7A71
    ) else (
        goto :MODELEBIDON
    )
    pause>nul
    ::**********************************************************
    :MS7A71
    echo cool le modele MS-7A71
    rem ajouter pause pour voir le message
    pause>nul
    exit /b
    ::**********************************************************
    :MODELEBIDON
    echo modele bidon
    rem ajouter pause pour voir le message
    pause>nul
    exit /b
    ::**********************************************************
    :GetModel <Model>
    Rem le paramètre %1 représente la variable qu'on va définir 
    Rem (dans notre cas %1=Model)
    FOR /F "tokens=2 delims==" %%I IN (
      'wmic computersystem get model /format:list 2^>^nul'
    ) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%1=%%A"
    exit /b
    ::***********************************************************

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut
    je vais tester celà demain matin merci

    l'idée serait aussi de ne pas faire de if + else comme pour deux choix mais plutôt 10 if sans else car j'aurais potentiellement 10 modèles de machines existants donc je veux tous les conditionner.

    C'est possible ?
    du genre

    If %modele1% == MOD1 goto :mod1
    If %modele2% == MOD2 goto :mod2
    etc

  8. #8
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Voici un autre moyen à tester chez vous
    Code BAT : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    @echo off
    Set "WMIC_COMMND=wmic computersystem get model"
    Call :GetModel Model
    findstr /I "%Model%" "%~f0">nul && ( goto :%Model% ) || ( goto :MODELEBIDON )
    pause>nul & exit
    ::**********************************************************
    :MODELEBIDON
    echo modele bidon
    rem ajouter pause pour voir le message
    pause>nul
    exit /b
    ::**********************************************************
    :MS-7A71
    echo cool le modele %Model%
    rem ajouter pause pour voir le message
    pause>nul
    exit /b
    ::**********************************************************
    :Aspire E1-571
    echo cool le modele est %Model%
    pause>nul
    exit /b
    ::**********************************************************
    :GetModel <Model>
    Rem le paramètre %1 représente la variable qu'on va définir 
    Rem (dans notre cas %1=Model)
    FOR /F "tokens=2 delims==" %%I IN (
      '%WMIC_COMMND% /format:list 2^>^nul'
    ) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%1=%%A"
    exit /b
    ::***********************************************************

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut réponse
    ouais c'est mieux en effet

    Par contre entre temps j'ai procédé autrement et j'ai passé en variable le modèle machine donc dans le script principal afin d'appeler un second script dans une arbo.
    C'est un script différent par modèle de PC qui se trouve à l'intérieur d'un répertoire portant le nom du modèle de PC.

    ainsi par la suite si problème sur un modèle j'irais éditer le fichier lui correspondant.

  10. #10
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par yakalelo57 Voir le message
    ouais c'est mieux en effet

    Par contre entre temps j'ai procédé autrement et j'ai passé en variable le modèle machine donc dans le script principal afin d'appeler un second script dans une arbo.
    C'est un script différent par modèle de PC qui se trouve à l'intérieur d'un répertoire portant le nom du modèle de PC.

    ainsi par la suite si problème sur un modèle j'irais éditer le fichier lui correspondant.
    Donc problème et sans aucun

  11. #11
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut retour
    ah ? on fait comment ?
    Désolé je ne suis pas très souvent ici ^^

    edit : j'ai trouvé une main verte, dis moi ci c'est OK ^^

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2014, 17h43
  2. script batch travaillant sur du *.txt
    Par goldonly04 dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 13/04/2010, 15h18
  3. Ligne de commande php pour exécuter un script php basé sur mon serveur web
    Par bdgtat dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 13/07/2007, 08h53
  4. [Etat] Basé sur le résultat d'une requête
    Par Pascal26 dans le forum WinDev
    Réponses: 13
    Dernier message: 12/04/2007, 09h04
  5. Réponses: 3
    Dernier message: 31/07/2006, 15h48

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