Variable : version de Windows

Fermé
Shakipu - 1 oct. 2008 à 21:29
 Shakipu - 21 oct. 2008 à 19:11
Bonjour,
Je voudrais savoir quelle commande (ou script) me permettrait de faire une action ou une autre selon la version de Windows... Par exemple :

si Windows est Windows XP
echo C'est un XP
si Windows est Vista
echo c'est un foutu Vista

il me faut juste 2 conditios : pour Windows XP et Vista ( comme dans l'exemple )
J'ai cherché par moi même mais je suis pas assez expérimenté... En fait je connais presque rien
Merci d'avance

13 réponses

Euh... J'ai oublié d'indiquer qu'il me faudrait une commande DOS...
0
Eh bien merci beaucoup, je verrais ça demain mais ça a l'air parfait
0
Alors alors,
ce code est parfait en ce qui concerne Windows XP mais quand ça concerne Vista... En fait, la commande "ver" dans Vista donne quelque chose comme : Microsoft Windows [version 6.0.quelquechose] donc ça ne marche pas... Je pense qu'il faut se baser sur le numéro de version ( 5 pour XP et 6 pour Vista ) pour que ce code marche dans les deux Windows... Une idée ?
Merci d'avance
0
Ton idée sur le numéro était pas mal réfléchie mais quand tu regardes le VER de Windows, tu trouves [version 5.0.2600] donc un 6...
mais je pense que la deuxième idée est l'idéale
merci beaucoup !
0

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

Posez votre question
Vista me dit qu'ELSE n'est pas un programme ou une commande reconnue... Etrange.... :s
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
3 oct. 2008 à 19:05
Il faut veiller à ce qu'il y ait un espace entre la ")" et le premier "E" du ELSE et également entre le "E" final et la "(".
Sinon je ne vois pas pourquoi tu as ce message.
-1
Finalement je vais essayer une autre technique : nous avons :
- sous Windows XP, "Microsoft Windows XP"
- sous Win Vista, "Microsoft Windows [version 6.0.1600]

IF "%version_W%" == "XP" (
C'est un XP )
IF "%version_W%" == "[v" (
C'est un foutu Windows

Cela fonctionnerait-t'il ? Je ne peux pas tester pour l'instant, je ne pourrais essayer que ce soir
merci d'avance
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
3 oct. 2008 à 19:18
Je ne pense pas que cela fonctionne de cette manière. Dans la variale %%K tu auras "[version"
IF "%version_W%" == "XP" ( 
C'est un XP ) 
IF "%version_W%" == "[v" ( 
C'est un foutu Windows )


De cette manière ça doit fonctionner (à tester sous Vista)
IF "%version_W%" == "XP" ( 
C'est un XP ) 
IF "%version_W%" == "[version" ( 
C'est un foutu Windows )

-1
Eh bien on peu clore ce sujet par un magnifique [Résolu] !
merci beaucoup à toi christian
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
3 oct. 2008 à 22:41
A bientôt peut-être sur CCM, bon courage,
-1
Dernière nouvelle, ma variable était en fait pour copier un fichier dans C:/Documents and Settings/%user%/ et apparemment, la commande %homedrive% permet d'y accéder quel que soit la version de Windows et l'utilisateur...
Je travaille dessus

P.S : quelqu'un aurait une variable permettant de savoir dans quel disque se situe le script ?
0
Petite erreur de ma part, c'est pas %homedrive% qui permet ça mais %homedrive%%homepath% ou %userprofile%
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
1 oct. 2008 à 22:40
Bonsoir,

Je te propose ce qui suit en MS-DOS:

SETLOCAL ENABLEdelayedExpansion
SETLOCAL ENABLEextensions
CLS

rem INFORMATIONS (sous windows XP) :
rem Cette commmande affiche : Microsoft Windows XP [version 5.1.2600]
VER
rem rem Cette commmande affiche : Windows_NT
ECHO %os%

rem Moyen d'identifier la version XP ou Vista :
      FOR /F  "tokens=1-4*"         %%I IN          (
           ' VER ^|  FIND "Windows" ')      DO  (
             SET "version_W=%%K" )
      IF "%version_W%"               ==   "XP"     (
           ECHO C'est un XP                        )
rem ici je présume que le libellé est "Vista". Je ne peux pas faire le test je
rem     suis sous XP.
      IF "%version_W%"               ==   "Vista"  (
           ECHO C'est un foutu Vista               )

pause
-1
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
1 oct. 2008 à 22:44
Tiens-moi informé, à demain.
-1
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
2 oct. 2008 à 19:15
Bonsoir,

Compte tenu du message de la commande VER ( Microsoft Windows [version 6.0.quelquechose) qui ne contient pas le mot Vista en lieu et place de XP, ce qui a pour effet d'éliminer l'avantage du "positionnel" (position des groupes de c. séparés par un espace au moins, dans les deux messages)) :
Microsoft Windows [version 6.0.quelquechose]
comparé à
Microsoft Windows XP [version 5.1quelquechose]
La recherche sur un numéro (5. ou 6.) semble raisonnable (il est peu probable de trouver à terme une version 5.6.1 par exemple pour windows XP ou l'équivalent pour Vista). Dans ce cas on peut programmer comme ceci :
      FOR /F                     %%I IN          (
           ' VER ^|  FINDSTR /C:"5." ')      DO  (
              ECHO C'est un  XP            )

      FOR /F                     %%I IN          (
           ' VER ^|  FINDSTR /C:"6." ')      DO  (
              ECHO C'est un foutu  Vista         )


Autre possibilité :
Si tu es certain de n'exécuter ce batch tel qu'il est, que sur les deux systèmes XP OU Vista, on peut aussi procéder par élimination (si ce n'est pas l'un, c'est l'autre) sans changer autre chose au code existant.
      IF "%version_W%"               ==   "XP"     (
           ECHO C'est un XP                        
    ) ELSE (
           ECHO C'est un foutu Vista                  )


Dis-moi ce que tu en penses.
-1
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
2 oct. 2008 à 22:55
Oui, mais le 6 de 5.0.2600 n'est pas suivi par un . (point) et l'on teste "5." et "6.". Mais de toute façon c'est scabreux.
Puisque la seconde solution te convient ce n'est pas plus mal.

Bon courage ! Merci pour le retour,
-1