Skip navigation.

exploreopera

| Help

Sign up | Help

photo

Groumphy au quotidien

Posts tagged with "batch"

MS-DOS : détecter un environnement virtuel

, , , ...

Alors qu’il y a quelques temps je vous faisais part d’un article permettant d’installer des imprimantes facilement, j’utilisais la variable d’environnement %clientname%. Quel ne fut pas mon étonnement de recevoir une « plainte » par e-mail m’informant que mon script ne fonctionnait pas.

Mais à cela je rajouterais que c’est tout à fait normal. Et pour cause la variable d’environnement est uniquement utilisable par un environnement virtuel… Hum. Mais alors comment faire ? Simplement je dirais en remplaçant cela par %computername% !
Simple mais fallait-il encore y penser.

Mais par la suite, toujours dans l’éventualité de pouvoir détecter un environnement virtuel comment faire ?
Très simple. Retenons ceci : %computername% renverra le nom du serveur de connexion. %clientname% renverra le nom du client qui est connecté.

De fait une simple structure conditionnelle du type suivant devrait pouvoir poser quelques soucis en moins à certaines personnes :
IF %COMPUTERNAME% EQU NOMSERVER (GOTO TC) ELSE (GOTO PC)
REM NOMSERVER = le nom du serveur d environnement virtuel

Dans l’’étiquette TC pourquoi ne pas faire une autre structure conditionnelle ? Tout test possible.
Identiquement pour l’étiquette PC.

Cependant il n’est pas rare d’avoir qu’un seul serveur permettant d’avoir un environnement virtuel. Mais lorsqu’on vois cela il n’est pas rare non plus d’avoir une harmonisation dans le nom.
SERVER1
SERVER2
SERVER3
Ou 
SRVIR69
SRVV89
SRVI76

Alors servons-nous un peu de notre intelligence :
SET VIRTUEL=%COMPUTERNAME:~0,5%
REM pour le premier exemple
SET VIRTUEL2=%COMPUTERNAME:~0,3%
REM pour le second exemple

Mais qu’est-ce que je fais ?
Simplement une limitation du nombre de caractère (nom court en MS-DOS) attribué dans une variable ou une autre…

Donc si ma variable est détectée dans ma structure conditionnelle alors je suis certain qu’il s’agit d’un environnement virtuel (ou du serveur lui-même !).

Voila qui j’espère répondra à la question de mon « plaintif ».

MS-DOS : créer une pause d’exécution

, , , ...

Non le BATCH n’est pas mort !

Alors que l’on parle de plus en plus de script de génération avancée, j’ai du pour des raisons professionnelles descendre vers la programmation en langage MS-DOS (oui bon ; pas de commentaire là-dessus !). Mais grand bien m’en a fit.
J’ai pu revoir quelques principes et faire quelques découvertes assez sympathique.

Une de celles-ci fut notament l’art et la manière de faire une pause d’exécution dans un fichier de commande (BATCH, extension .bat).
D’autres avait bien entendu déjà pensé à faire cela. Je pense spécifiquement au WAIT.BAT ou encore des SLEEP.BAT…

Mais je me suis dit pourquoi ne pas faire encore plus simple, mais j’avoue que la technique n’est pas des plus propres (mais si vous regardez aussi les fichiers cités plus haut, c’est tout aussi sale que mon exemple). Faire un PING vers un hôte inexistant avec une attente de réponse élevée.

En code cela donne ceci :
PING MONHOTEINCONNU -N 1 -W 10000
REM –N indique le nombre de requête envoyées, ici 1
REM –W indique le temps d’attente (timeout), ici 10 secondes

Cela donnera un temps mort au script… Peut-être juste le temps d’afficher (via ECHO) un logo ? Une information ? Une action ?
Rappelons-nous que nous pouvons très bien le faire :
REM echo. pour afficher une ligne vide
ECHO.
ECHO.
REM caractere speciaux pour faire du dessin
ECHO °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
ECHO ° WELCOME ON THE NETWORK °
ECHO °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
ECHO -----------------------------------------------
ECHO Please wait
ECHO -----------------------------------------------
ECHO.
PING MONHOTEINCONNU –N 1 –W 10000

Mais ce que j’apprécie surtout c’est d’avoir pu insérer de l’ASCII ART dans le script… Pour un logo par exemple :
ECHO.
ECHO.
ECHO   #####                                                  
ECHO  #     # #####   ####  #    # #    # #####  #    # #   # 
ECHO  #       #    # #    # #    # ##  ## #    # #    #  # #  
ECHO  #  #### #    # #    # #    # # ## # #    # ######   #   
ECHO  #     # #####  #    # #    # #    # #####  #    #   #   
ECHO  #     # #   #  #    # #    # #    # #      #    #   #   
ECHO   #####  #    #  ####   ####  #    # #      #    #   #  
ECHO.
ECHO.
PING MONHOTEINCONNU –N 1 –W 10000
[code]
Je trouve plutôt cela sympa… Autant attendre avec quelque chose qui peut être joli.
Et si nous voulons peaufiner nous pouvons aussi utiliser COLOR et @TITLE.
Respectivement ils définiront une couleur de fond et de police ainsi que le titre de la fenêtre MS-DOS.
[code]
COLOR FA
@TITLE LOGON SCRIPT
ECHO.
ECHO Ici mon texte ou mon logo
ECHO.
PING MONHOTEINCONNU –N 1 –W 10000

Et bien entendu nous précederons toutes nos lignes par un @ECHO OFF et un @CLS. A chaque informations que nous affichons nous pourrons donc l’éffacer…
Plutôt simple et efficace. J’aime.
October 2008
MTWTFSS
September 2008November 2008
12345
6789101112
13141516171819
20212223242526
2728293031