[DOS] Stocker résultat commande dans une variable

Résolu/Fermé
Shooter78 - 12 mars 2013 à 12:37
Shooter78 Messages postés 12 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 13 septembre 2014 - 13 mars 2013 à 00:42
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

Shooter78 Messages postés 12 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 13 septembre 2014 3
13 mars 2013 à 00:42
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
dubcek Messages postés 18562 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 novembre 2022 5 565
12 mars 2013 à 14:41
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
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
dubcek Messages postés 18562 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 novembre 2022 5 565
12 mars 2013 à 16:40
%a contient chaque ligne, ma commande stocke dans t la dernière ligne, donc la deuxième.
enlève tes set
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
dubcek Messages postés 18562 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 novembre 2022 5 565
Modifié par dubcek le 12/03/2013 à 17:11
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
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