[DOS] Stocker résultat commande dans une variable

Résolu
Shooter78 -  
Shooter78 Messages postés 14 Statut Membre -
Bonjour,

Je voudrais savoir comment stocker le résultat d'une commande dans une variable ?
Voici la commande en question: "wmic csproduct get identifyingnumber"
Le résultat étant sur 2 ligne, je ne voudrais récupérer dans ma variable que la 2 seconde ligne.
Merci d'avance

7 réponses

  1. Shooter78 Messages postés 14 Statut Membre 3
     
    J'ai finalement réussi à faire ce que je voulais.
    Voila le code pour obtenir le numéro de série:
    FOR /F "tokens=2 delims==" %%B IN ('WMIC csproduct GET identifyingnumber /VALUE ^| FIND /I "IdentifyingNumber="') DO SET serial=%%B

    Voici celui pour le modèle du pc:
    FOR /F "tokens=2 delims==" %%A IN ('WMIC csproduct GET Name /VALUE ^| FIND /I "Name="') DO SET machine=%%A


    Merci Dubcek pour ton aide
    3
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    essayer interactivement
    for /F %a  "delims=" %a in ('wmic csproduct get identifyingnumber') do  set t=%a
    echo %t%
    
    dans un .bat, utiliser %%a
    1
  3. Shooter78
     
    Bonjour,

    j'obtiens ceci:

    C:\Windows\system32>for /F "delims=" %a in ('wmic csproduct get identifyingnumber') do  set t=%a
    
     :\Windows\system32>set t=IdentifyingNumber
    
     :\Windows\system32>set t=XXXXXXXXXXX
    
     :\Windows\system32>set t=
    
    C:\Windows\system32>echo %t%
    Commande ECHO activée.


    je pense que comme il y à plusieurs ligne, il redéfinit la variable pour chaque ligne.
    Une idée ?

    Merci encore pour votre aide .

    Ps: XXXXXXXXXXXXX étant la ligne que je souhaite récupérer.
    0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    %a contient chaque ligne, ma commande stocke dans t la dernière ligne, donc la deuxième.
    enlève tes set
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Shooter78
     
    Les ligne soulignées sont le résultat de la commande, ce n'est pas moi qui est mis les SET.
    D'après le résultat il doit apparemment y avoir 3 lignes (une de vide ?) , ce qui expliquerais pourquoi à la fin j'obtiens le ECHO activée à la place du numéro de série

    C:\Windows\system32>for /F "delims=" %a in ('wmic csproduct get identifyingnumber') do  set t=%a 
    
     :\Windows\system32>set t=IdentifyingNumber 
    
     :\Windows\system32>set t=XXXXXXXXXXX 
    
     :\Windows\system32>set t=
    
    C:\Windows\system32>echo %t% 
    Commande ECHO activée.


    merci pour ton aide
    0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    possible effectivement , si il y a une ligne vide, il faut l'avant dernière
    quel Windows ? j'ai XP
    qu'affiche la comnmande (avec numérotation des lignes)
    wmic csproduct get identifyingnumber | findstr /n "." 
    mettre do @set t=%a pour ne pas voir les set s'affifcher
    0
  8. Shooter78
     
    J'ai Windows 7 pro x64.
    voila le résultat de ta commande:

    1:IdentifyingNumber 
    2:XXXXXXXXXXXX


    Donc apparement il n'y a pas de 3ème ligne.
    Bizarre.
    0