MsDos

Un article de Agora2ia.

Sommaire

Tips

  • Avoir la liste des commandes disponibles : >help
  • Imposer que la définition de variables d'environnement soit locale au script : SETLOCAL


Page de codes

Nous appelons page de codes, l'ensemble des matrices (dessins) des caractères relatifs à un périphérique. Par exemple, nous pouvons utiliser une page de codes pour définir les caractères affichés sur l'écran. Les matrices des caractères sont contenues dans des fichiers portant l'extension "CPI".

Pour utiliser cette propriété, nous devons préparer et configurer le DOS à ce processus avec la commande externe MODE. Nous pouvons aussi faire appel aux commandes externe NLSFUNC et CHCP à l'invite du DOS.

Personnellement, je n'utilise pas cette possibilité, car elle n'est pas portable avec l'ensemble des programmes DOS. En effet, elle redéfinit la table ASCII, et de ce fait ne propose plus les mêmes caractères. Par exemple, un caractère de cadre (mixte) peut être redéfini, pour une page de codes française, en un caractère majuscule accentué.


Mode silencieux

Rajouter un @ en début de ligne pour ne pas la voir s'afficher dans la console à l'éxecution :

@rem Positionner le titre
@set title MyDos


L'instruction IF

if "%TITLE_JDK%"=="" set TITLE_JDK=jdk=%JAVA_HOME%


La négation

http://www.dewassoc.com/support/msdos/if.htm

Pour obtenir la négation, faut préfixer le prédicat par NOT. Par exemple, pour tester si un paramètre n'est pas vide :

if NOT "%1"=="" goto WITH_PARAMETER


L'instruction GOTO

L'instruction IF est souvent associée à la commande GOTO qui permet de court-circuiter une exécution, en collaboration avec la définition d'une étiquette où aller (avec les deux poinst ":").

Dans l'exemple suivant, le script vérifie si il a bien été appelé avec un paramètre (%1) : si oui, il exécute la commande my-commande avec ce paramètre, et sinon il affiche un exemple d'utilisation (en reprenant le nom du script avec %0). Pour cela on définit deux étiquettes USAGE et END :

@if "%1"=="" goto USAGE
my-commande %1
goto END

:USAGE
@echo Exemple d'utilisation de cette commande : %0 01/10/2007

:END


Obtenir le répertoire du script CMD

Via la commande %~dp0 :

set PROGDIR=%~dp0

Il y a une différence entre %~dp0 et cd :

  • Tout d'abord, %~dp0 ne fonctionne que dans un fichier batch, mais ne fonctionne pas en ligne de commande.
  • Ensuite, si vous appelez, depuis un répertoire rep1 le fichier de script qui se trouve dans un autre répertoire rep2, %~dp0 indiquera rep2 (c'est à dire le répertoire du batch) alors que cd indiquera rep1 (c'est à dire le répertoire courant).

Exemple : Créer le fichier D:\show-dir.bat

@echo off
echo this is %%cd%%  %cd%
echo this is %%~dp0 %~dp0

puis l'éxecuter depuis un autre endroit, cela donne :

C:\>D:\show-dir..bat
this is %cd%  C:\
this is %~dp0 D:\

Pour plus de détails sur cette commande et notamment la signification du "0", vous pouvez vous référer à %~dp0 vs %cd%

Ressources