Wednesday, 16. July 2008, 17:21:08
%computername%, batch, set, %clientname%
...
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 ».
Wednesday, 25. June 2008, 07:49:46
cls, sleep.bat, color, @cls
...
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.