Fichiers de commandes

Fichiers de commandes

Q. Qu'est-ce qu'un fichier de commandes?

A. Un fichier de commande est un fichier texte, doté d'une extension .bat ou .cmd, avec une syntaxe et un ensemble de commandes conformes. Pour exécuter un fichier de commande, tapez le nom du fichier, on peut ne pas préciser les extensions .cmd et .bat. Le fichier de commandes suivant écrira "Hello World".

  1. Démarrer Notepad
  2. Tapez ceci
    @echo hello world
    Echo permet d'écrire à l'écran ce qu'il reçoit en paramètre (le @ évite l'affichage de la commande elle-même, essayez avec et sans @). Pour qu' aucune commande n'apparaisse à l'écran, ajoutez
    @echo off au début du fichier.
  3. Choisissez dans le menu File "Save as"
  4. Donnez un nom "<nom>.cmd, n'oubliez pas d'inclure les ", sinon Notepad ajoutera .txt à la fin !
  5. Démarrez : cmd.exe
  6. Tapez le nom du fichier de commande (sans extension) : testfile
     

Q. Quels sont les commandes pouvant être utilisées dans un fichier de commandes?

A. Windows NT 4.0 a inauguré quelques extensions à cmd.exe, mais assurez-vous que  HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions est positionné à 1. Voici une liste de commandes :

call <Fichier de commande>  Appelle un fichier de commande à partir d'un autre. L'exécution du fichier courant est suspendu tant que le fichier appelé n'est pas terminé.
exit Arrête l'exécution d'un fichier. Si un fichier est appelé à partir d'un autre et qu'on utilise exit les deux fichiers sont arrêtés.
findstr <string> <filename(s)> Pour rechercher une chaîne de caractère dans un fichier. Cette commande dispose de beaucoup d'options et est puissante.
for Commande standard pou les boucles 
for /L %n IN (1,1,10) DO @ECHO %n
affiche 1 à 10 à l'écran
goto <label> Permet d'aller à un endroit donner du fichier. La déclaration du label doit être précéder de deux points (:) 

goto label1 
... 
:label1 
...

if <condition> .. If permet beaucoup de choses. Une des utilisations les plus courantes est : 
if /i <string1> <compare> <string2> <command>
Le /i fait la comparaison sans tenir compte de la casse et compare peut être choisit parmi :
EQU égal 
NEQ différent 
LSS inférieur 
LEQ inférieur ou égal 
GTR supérieur 
GEQ supérieur ou égal 
if errorlevel
if exists <file name>
rem <string> Pour des commentaires
start <window title> <command> Lance une autre fenêtre de commande et exécute la commande. Contrairement à call, le fichier de commande en cours n'est pas interrompu et continu de s'exécuter.

Il y a d'autres utilitaires fournis avec le Resource Kit qui sont très utiles.

Q. Comment déclencher une action suite à la création d'un fichier ?

A. C'est un besoin courant des utilisateurs qui envoient par FTP des fichiers et qui souhaiteraient qu'une action soit déclenchée après l'arrivé du fichier.
Voici un fichier de commande qui permet cela :

:filecheck
if exist e:\upload\file.txt goto actionfile
sleep 100
goto filecheck

:actionfile
...

Ce fichier vérifie le fichier file.txt toutes les 100 secondes. Le programme sleep.exe est fourni dans le Resource Kit, il vous faut l'installer pour l'utiliser.

Q. Comment accéder à des fichiers situés sur d'autres machines?

A. Vous pouvez utiliser la convention de nommage UNC , e.g. \\<server name>\<share name>\<dir>\<file>. Vous pouvez aussi connecter un lecteur, et utiliser ce lecteur pour accéder aux fichiers, puis déconnecter le lecteur, e.g.

net use g: \\savilltech\filetosee
... g:\dir\file.txt
net use g: /d

Q. Comment envoyer un message à partir d'un fichier de commandes?

A. Avec la commande NET SEND, e.g.

net send <machine> "<message>"