.

windows


batchs

NT 4

vbs

autoghost


linux


semaine 1

semaine 2

tp sem. 1

adduser


réseaux


(a faire)


cisco


semaine 1

semaine 2

tp 2-1

tp 2-2

tp 2-3

tp 2-4


php


projet

petit jeu


perso


boot disks

trucs utiles

divers

vinyls






BATCHS
et commandes DOS

Les fichiers batch (*.bat) permettent d'automatiser certaines tâches fastidieuses ou répétitives, et ainsi de gagner du temps.
Le bloc-notes de Windows (ou Edit sous DOS) suffit pour écrire de petits batchs, mais il existe des utilitaires spécialisés tel Powerbatch qui disposent d'options intéressantes (modèles, dessins de bordures, compilation).

Taper simplement dans le bloc-notes :
echo salut ca va ?
pause

puis enregistrer au format .bat. le lancer.

La commande pause nous permet d'admirer notre travail en affichant "Appuyez sur une touche pour continuer". Sans elle la fenêtre DOS se ferme toute seule (si on lance le batch sous Windows).

La commande echo affiche tout ce qui la suit à l'écran.
echo. (attention au point) affiche une ligne vide.
echo off désactive l'affichage à l'écran des commandes éxécutées, jusqu'à la commande echo on
echo seul renvoie à l'écran son état actuel (actif ou inactif)

@ désactive l'affichage de la commande qui suit.
Il est d'usage de placer @echo off sur la première ligne d'un batch. Ainsi aucune commande n'apparait à l'écran lors de l'éxécution du batch.

cls efface l'écran

rem permet d'insérer du commentaire dans un batch, afin de le rendre plus lisible. Le texte qui suit rem est ignoré.

Les variables, en y stockant des données, permettent d'écrire des batchs très souples.
on affecte une valeur a une variable ainsi : set nomdevariable=valeur
on appelle la valeur de la variable en utilisant %nomdevariable%
exemple :

set rep=c:\dossier

< on affecte la valeur c:\dossier à "rep"

mkdir %rep%

< on crée le répertoire contenu dans la variable "rep"

on efface une variable en la "vidant" : set variable=
il existe des variables prédéfinies. Pour connaître celles déja chargées, taper set à l'invite de commande.
%windir% par exemple contient le lien direct vers le répertoire Windows.
path : chemin où chercher les éxécutables. Pour ajouter un chemin : set path=%path%;nouveau chemin
taper path à l'invite de commandes permet d'afficher la liste courante de ces chemins.

les valeurs assignées à des variables définies dans un batch sont effacées une fois que la fenêtre DOS est fermée.

boucles avec labels et goto :
on peut avoir besoin d'effectuer une commande plusieurs fois en boucle.
la commande goto renvoie au label qu'on lui précise. Le nom du label, dans le batch, doit être précédé de deux points ( : )
exemple : une boucle infinie
@echo off
:debut
echo je me repete
goto debut

utiliser Ctrl C pour faire un Break et mettre fin a l'éxecution d'une commande DOS ( ou d'un batch).

éxécution conditionelle avec if :

if "condition"=="valeur" action

< noter les deux signes "égale". On affecte une seule action par if

if not "condition"=="valeur"action

< idem

if exist c:\dossier action

< vérifie l'existence d'un fichier, dossier, etc... et éxécute l'action si la condition est remplie.

for ... do

for %%A in (1 2 3 4) do echo c'est le nombre %A
renvoie :
c'est le nombre 1
c'est le nombre 2
c'est le nombre 3
c'est le nombre 4

for %%A in (*.bat *.txt) do dir %A
liste les fichiers bat et txt du répertoire où se situe le batch.

redirection des sorties avec >> (append)
echo salut >> c:\fichier.txt
cette ligne crée fichier.txt s'il n'existe pas et y ajoute "salut". Si fichier.txt existe déjà, "salut" est ajouté à la suite du fichier.

redirection des sorties avec > et <
> permet d'écraser le fichier de destination
on peut également utiliser > ainsi :
test>prn envoie test à l'imprimante
test>lpt1 envoie test sur le port parralèle

date < fichier.txt
applique la date contenue dans fichier.txt comme nouvelle date

pipe ( | )
echo o| del *.*
répond automatiquement oui (o) à la commande del

echo. |date >> fichier.txt
ecrit la date dans fichier.txt et fait une confirmation automatique.

dir *.* |more
affiche le listage page par page

call
call c:\windows\batch2.bat
Placée dans un batch, cette ligne lance le batch externe batch2 puis la suite du batch local.

nul
nul represente un peripherique ou un fichier virtuel
exemple :
pause>nul fait la pause classique dans l'éxécution du batch mais n'affiche pas le message habituel
if exist a:\nul action teste, comme nul est virtuel, l'existence ou la validité du lecteur A:

errorlevel ( et choice )
si errorlevel=0 la commande à été éxécutée sans problème
si errorlevel=1 ou plus, il y a eu erreur
pour utiliser errorlevel en tant que condition, il faut le faire dans l'ordre décroissant (voir le petit batch suivant)

on peut se servir d'errorlevel avec la commande choice pour faire des batchs interactifs :

echo lancer paint (1)
echo lancer demineur (2)
echo quitter (3)
choice /c:123 "votre choix"
if errorlevel 3 goto fin
if errorlevel 2 goto demineur
if errorlevel 1 goto paint

etc...

paramètres
comme pour tout programme, il est possible d'ajouter des paramètres a l'éxécution du batch.
exemple : on desire lister le contenu d'un répertoire avec dir.
mais si ce répertoire contient trop de fichiers, l'affichage s'étale sur plusieurs écrans.
entrer dir /p afficherait le resultat page par page.
/p est ici un paramètre de dir.
on peut ainsi spécifier jusqu'a 9 paramétres, utilisables dans un batch par les variables %1 %2 %3 jusqu'a %9.
exemple:
@echo off
echo les %1 c'est %2
pause
lancer ce batch avec les parametres batchs et cool : c:\batch.bat batchs cool

il peut ainsi être intéressant d'utiliser les paramètres pour rendre les batchs plus rapides ou plus précis.





- retour en haut de la page -