1 Utilisateur(s) en ligne

Programmation Batch

Par crazy_girl

Le batch fonctionne uniquement sous windows (toutes versions avec quelques différences pour les systèmes à base NT c'est à dire 2000 et XP), c'est une série de commandes MS-Dos qui s'exécuteront les unes après les autres à l'ouveture du programme. La console Dos est accessible depuis windows en faisant demarrer / executer / cmd. Les commandes peuvent ici être entrées une par une.

Pour enchaîner des commandes prédéfinies, il suffit d'écrire les commandes dans le bloc note puis d'enregistrer avec l'extension .bat, ou d'utiliser un compilateur tel que Powerbatch pour rédiger le programme et le compiler en .bat ou .com : on obtient alors notre programme en Batch (on peut aussi utiliser la commande edit dans la console mais c'est du dos, donc c'est vieux et moche et pas pratique (vous irez voir) alors autant uriliser le bloc note).

  • Liste des commandes
On peut voir pas mal de commandes en tapant help dans la console dos, les recopier serait inutile. Je mettrai ici les plus importantes ( les plus utiles et compréhensibles), des infos supplémentaires sur certaines commandes et notamment sur la syntaxe. Il n'y a pas de différence entre majuscules et nimnuscules (pas de casse).

Esthétique.

@ECHO OFF affiche que les résultats des commandes MS-Dos et non les commandes elles-mêmes (commande ECHO OFF) et il cache aussi le « echo off » (@)  => à placer en début de programme.
TITLE titre Change le titre de la fenêtre en « titre » ici.
COLOR 0A changera la couleur du fond (code 0) et des caractères (code A).
Codes couleurs : 0 = Noir, 1 = Bleu foncé, 2 = Vert, 3 = Bleu gris, 4 = Marron,5 = Pourpre, 6 = Kaki, 7 = Gris clair, 8 = Gris, 9 = Bleu clair, A = vert clair, B = Cyan, C = Rouge, D = Rose, E = Jaune, F = blanc.
IF : Effectue un traitement conditionnel dans un fichier de commande
Syntaxe : If « condition » == « valeur » action
-> IF not "%os%" =="Windows_NT" goto Oserr  Vérifie que le système est windows NT, et sinon crée une erreur (indispensable pour changer les couleurs) => à placer si necessaire (conseillé) en début de programme.
PAUSE empeche la console de se fermer après l'execution des commandes => à placer en fin de programme, il faut appuyer sur une touche pour fermer. PAUSE>NUL -> pas de texte afficher. PAUSE /TO,5>NUL -> se ferme après 5 secondes.
Pour faire des bordures :
ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ECHO º Texte º
ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
=> Í = bordure horizontale, º = bordure verticale, É = coin supérieur gauche, È = coin inférieur gauche, » = coin supérieur droit, ¼ = coin inférieur droit.
Pour changer la taille de la console : MODE CON COLS=50 LINES=80 par exemple (chiffres à changer).
CLS : efface l'écran.
EXIT : Quitte l'interprétateur de commandes .

Manipulation de fichiers, écriture.

ECHO texte : affiche du texte (« texte »).
ECHO. : saute une ligne.
REM : Insère un commentaire dans un fichier de commandes
GOTO nom : Poursuit l'exécution des commandes à une ligne identifiée par une étiquette, :nom .
CD C: nom du répertoire permet de rejoindre un repertoire (pour ensuite y créer un dossier ou copier un fichier par exemple).
DIR C:WINDOWS : affiche le contenu de c:windows (ou autre dossier).
CHDIR: Modifie le répertoire ou affiche le nom du répertoire en cours
COPY : Copie un ou plusieurs fichiers.
DEL fichier : cette commande permet de supprimer le fichier « fichier ».
MD : Crée un répertoire.
REN : Renomme un ou plusieurs fichiers.

Sécurité

CHKDSK: Vérifie un disque et affiche un relevé d'état
CHKNTFS: Affiche ou modifie la vérification du disque au démarrage
COMPACT : Modifie ou affiche la compression des fichiers sur une partition NTFS
CONVERT : Convertit des volumes FAT en volumes NTFS. Vous ne pouvez pas convertir le lecteur en cours d'utilisation.
FORMAT : Formate un disque pour utilisation avec Windows. Ajouter /q -> formatage rapide, /y -> sans confirmation (on obtient « format c: /q /y »).

Commandes qui affichent des informations (ça c'est drôle !!)

CHCP: Modifie la page de code active ou affiche son numéro (affiche un numéro)
DATE : Affiche ou modifie la date.
ATTRIB: Affiche ou modifie les attributs d'un fichier (plein d'infos 'inutiles').
PATH : Affiche ou définit le chemin de recherche des fichiers exécutables (affiche un chemin).
SET : Affiche, définit ou supprime des variables d'environnement Windows.
TIME affiche et permet de changer l'heure.
IPCONFIG affiche l'ip.
NETSTAT affiche les connexions.
DIR. DIR.. ou DIR? : affichent le contenu du dossier courant puis dossiers parents et racine.
VOL : affiche le nom du volume.

Autres

PING *ip ou url* : envoie une requète de ping (exemple : ping -a http://www.oltana.net), on récupère l'ip de l'url au passage.
Quitter windows : %windir%\RUNDLL32.EXE User.exe,ExitWindows.
Relancer windows : shutdown .
On peut remplacer le contenu d'une variable par %variable% : exemples : %nom%, %WINDIR%, %WINBOOTDIR%, %COMPUTERNAME%, %USERNAME%, %USERPROFILE% (il faut que les variables contiennent quelque chose, tester ECHO %WINDIR%). Pour définir une variable : SET.
Exemple : SET VersionWindows = XP. La commande SET seule indiquera ensuite cette variable.

  • Applications
Powerbatch est plus facile pour réaliser les batch : certaines commandes sont déjà écrites et ont juste à être insérées, et notamment au niveau de la présentation.

Programme donnant des infos sur le système (on peut ajouter des pauses entre certaines commandes pour s'y retrouver) :

@echo off
mode con cols=110 lines=60
title infos
IF not "%os%" =="Windows_NT" goto Oserr
color 5C
echo ÉÍÍÍÍÍÍÍÍ»
echo ºBonjour!º
echo ÈÍÍÍÍÍÍÍͼ
echo.
echo.
echo voici vos parametres systeme
date
time
ipconfig
netstat
pause
set
chcp
echo.
pause
path
vol
echo %WINDIR%
echo %WINBOOTDIR%
echo %COMPUTERNAME%
echo %USERNAME%
echo %USERPROFILE%
pause>nul

Pour créer un fichier contenant l'adresse ip (exemple), et proposer sa suppression :

@echo off
cls
title ip
color 47
echo %username% :
ipconfig
cd %userprofile%
rem va au dossier C:\documents and settings\user
echo.
echo creation du dossier ip dans %userprofile% imminente
echo.
echo.
echo appuyer sur une touche pour continuer ou fermer pour arreter
pause>nul
md ip
cd %userprofile%/ip
cd
ipconfig>>ip.txt
echo fihier ip.txt contenant votre adresse ip cree
pause
choice /C:ab Si tu veut effacer le fichier tape a sinon tape b (quitte)
/T:b,10
rem choisit b après 10 secondes
if errorlevel = 1 goto a
if errorlevel = 2 goto b
:b
exit
:a
cd..
del ip
cd %userprofile%
rd ip
pause

Voilà ceci est une approche de la programmation en batch, il y a des commandes bien plus complexes permettant d'agir sur le système. Faites attention aux fausses manips, les fichiers batch peuvent causer des dégats et être utilisés à mauvais escient...

Sources / pour en savoir plus :
http://www.neliger.com/?page=langage_batch
http://securityhack.net/?page=tutobatch
http://www.moteurprog.com/?url=article_ ... article=76
http://www.astase.com/products/doc/tutoriel_batch.pdf
http://www.chez.com/scudo/Faq/dos/
http://www.namani.net/index.html


Publié le: dimanche 27 décembre 2009 (2604 lectures)
Copyrights © par Oltana.net

Format imprimable

[ Retour ]