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 :

Différencier XP de NT dans un batch


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut Différencier XP de NT dans un batch
    Bonjour,

    J'ai besoin de connaitre dans un batch si l'on est sous XP ou sous NT.

    En fait sous XP , XCOPY doit avoir l'option /Y pour écraser des fichiers sans le prompt , alors que sous NT ce parametre n'est pas connu (d'ou erreur si je l'utilise). et comme je me sers de ce batch lors du login , je ne sais pas si je suis sur une bécane XP ou NT.

    merci de votre aide

  2. #2
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Ca va être difficiel parce que la variable %OS% afiche Windows_NT sous XP.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Ver

  4. #4
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Tien une boucle for pour utiliser le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /f "tokens=3 delims= " %%i in ('ver') do (
      if "%%i"=="XP" echo Vous utilisez Windows XP
      if "%%i"=="NT" echo Vous utilisez Windows NT
    )

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut voici une solution ...
    hi

    merci pour votre aide , voici la solution que j'ai finalement trouvé (la boucle for .. n'avait pas l'air de fonctionner - j'ai pas compris pourquoi ?!) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if exist "c:\Documents and settings" echo XP
    if not exist "c:\Documents and settings" echo NT
    je sais c'est pas très joli ...

    merci pour votre aide

  6. #6
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Chez moi la boucle for focntionne parfaitement, mais je suis sous XP et je ne peut pas la tester sous NT.

    A tu NT a ta disposition ? si oui, peut tu me donner le résultat de la commande ver ?

    Windows NT na pas de session d'utiliosateur ?

  7. #7
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    L'exécutable ver est inclus dans toutes les versions de Windows et déjà inclus dans le path.
    Pour récupérer la version, on redirige la sortie de cet exécutable vers la commande find, ensuite, on récupère le retour de cette commande avec la variable errorlevel.



    Exemple d'application, avec la commande set.

    Le fichier script devra avoir impérativement une extension .bat pour être compatible avec tout les os.
    On peut le nommer version.bat, il peut être agrémenté ou appelé depuis tout autre fichier script grâce à la commande call.

    Je m'étale, revenant à l'essentiel du sujet :

    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
    23
    24
    25
    26
    27
    28
    29
    
    @echo off
    ::initialisation de ma variable systeme
    set systeme=inconnue
    ::pour windows XP
    ver | find /i "windows XP" > nul
    IF not errorlevel 1 set systeme=windows XP
    ::pour windows 2000
    ver | find /i "windows 2000" > nul
    IF not errorlevel 1 set systeme=windows 2000
    ::pour windows millenium, mais là je suis pas sûr
    ver | find /i "windows Me" > nul
    IF not errorlevel 1 set systeme=windows Me
    ::pour windows 98
    ver | find /i "windows 98" > nul
    IF not errorlevel 1 set systeme=windows 98
    ::pour windows 95
    ver | find /i "windows 95" > nul
    IF not errorlevel 1 set systeme=windows 95
    ::pour windows nt
    ver | find /i "windows nt" > nul
    if not errorlevel 1 set systeme=windows NT
    echo.
    echo system %systeme%
    echo.
    ::juste pour rire
    echo Content?
    pause > NUL
    voilà, je vous laisse le modifier à votre convenance

  8. #8
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Citation Envoyé par eljoedaz Voir le message
    hi

    merci pour votre aide , voici la solution que j'ai finalement trouvé (la boucle for .. n'avait pas l'air de fonctionner - j'ai pas compris pourquoi ?!) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if exist "c:\Documents and settings" echo XP
    if not exist "c:\Documents and settings" echo NT
    je sais c'est pas très joli ...

    merci pour votre aide
    C'est pire que pas très joli.
    Ca pourrait fonctionner au cas où tu aies obligatoirement installé le système sur C: , ce qui n'est pas toujours le cas. Par contre, si tu veux vraiment exploiter ce genre de test, ça serait mieux d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if exist "%SystemDrive%\Documents and settings" echo 2000/XP
    if not exist "%SystemDrive%\Documents and settings" echo 9X/NT
    Sous Windows 2000 Pro, la boucle FOR fonctionne correctement si l'on ajoute la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if "%%i"=="2000" echo Vous utilisez Windows 2000

  9. #9
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Attention Vow,

    Sur les systèmes de type XP ou 2000, le dossier de sauvegarde des profils ne s'appelle pas systématiquement "Documents and settings" et n'est pas non plus forcément localisé dans la partition système.

    Par ailleurs, pour des raisons de compatibilités ascendantes, il arrive souvent que l'on trouve un dossier "Documents and settings" dans la partition système de Windows NT SP6x.

    Comprends ainsi que même si ton code a plus de probabilité de fonctionner que celui d’eljoedaz, grâce notamment à l'adjonction de la variable d'environnement %SystemDrive%, il n'est cependant pas fiable du tout et pourrait conduire a des résultats inattendus.


  10. #10
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Alors là, je pense qu'il y a incompréhension de mon message.
    Je n'ai jamais dit que mon code était joli, j'ai juste corrigé celui de eljoedaz.
    Et je n'ai jamais dit que l'on ne pouvait pas mettre le répertoire "Documents and settings" d'un utilisateur que dans celui par défaut.
    Par contre, j'affirme que l'installation d'un Windows XP/2000 crée bien ce répertoire sur la racine du système et il crée également des sous-répertoires des utilisateurs système (Default User, All Users, ...). Ce répertoire est toujours existant, que je sache (les sous-rép cités ne sont pas transférables ailleurs), même si celui de l'utilisateur courant est ailleurs.
    Le répertoire "Documents and settings" sur du NT4 (s'il existe) se trouve dans le répertoire WINNT et non pas sur la racine de la partition.

Discussions similaires

  1. Mettre en automatique un service dans un batch
    Par log1c dans le forum Windows
    Réponses: 1
    Dernier message: 02/12/2005, 13h23
  2. recuperer date dans un batch et la placer en variable
    Par Phenomenium dans le forum Windows
    Réponses: 6
    Dernier message: 07/06/2004, 11h44
  3. probleme d' echo dans un batch
    Par zorian dans le forum Windows
    Réponses: 16
    Dernier message: 18/05/2004, 18h21
  4. Réponses: 5
    Dernier message: 01/10/2003, 16h03

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