Cours DOS

DOS : Disk Operating System

Présentation :
DOS est un système d'exploitation développé par Microsoft en 1981.
On l'utilise encore de nos jours pour sa simplicité. Il permet entre autre de créer des scripts (petits programmes), de dépanner une machine ou d’effectuer un diagnostique.

Vous l'avez surement déjà utilisé pour administrer le réseau de votre entreprise avec des commandes comme ipconfig, nslookup, tracert.

Les fichiers sous DOS sont nommés sous 8 caractères maximum au delà nous verrons apparaitre un ~ (tilde) puis suivi d'une extension sur 3 caractères.
Exemple : autoexec.bat, script.bat, install.exe, config.sys...

Les Répertoires :
Répertoire principal : C :\ (unité complète appelé racine)
Répertoire courant : Répertoire ou l'on se trouve.
Chemin d’accès absolu : Toujours à partir de la racine.
Chemin d’accès relatif : Chemin ou l'on est.

Les caractères spéciaux permettent de remplacer un ou plusieurs caractères voici ceux qui existent :
* : Remplace une suite de caractères 0 à n caractères (8max).
! et ? : Remplace un caractère.
_ : Évite le vide (espace)

Les Commandes :
La syntaxe d'une commande s’écrit de cette manière :
NOM_DE_COMMANDE [PARAMETRE] [OPTIONS]
DIR *.JPG /W
La commande dir permet de lister.
Si l'on veux connaitre ce que contient le dossier Windows nous pouvons exécuter cette commande :
dir C:\Windows
Liste des commandes :
HELP : permet d'avoir l'aide - affiche une liste des commandes possibles.
HELP NOM_DE_COMMANDE : nous donnes toutes les infos (fonction de la commande, liste des paramètres et des options et même quelques exemples) sur la commande entrée.
DIR : Lister le contenu
CD ou CHDIR : Se déplacer dans les répertoires (CD.. permet de revenir en arrière)
MD ou MKDIR : Création de répertoire
RD ou RMDIR : Suppression de répertoire (le répertoire doit être vide sinon RD /s)
TREE : Visualisation de l'arborescence
TYPE : Visualise le contenu d'un fichier
COPY : Copier un fichier (fonctionne pour un répertoire)
DEL ou DELETE : Supprimer un fichier
MOVE : Déplacer un fichier (fonctionne pour un répertoire)
REN ou RENAME : Renommer un fichier (fonctionne pour un répertoire)
PRINT: Imprimer un fichier
ATTRIB : Attribut d'un fichier
FDISK : Prépare le disque dur (FAT, NTFS...)
FORMAT : Formate le disque dur
DISKCOPY : Duplication de disque dur
SCANDISK : Vérifie l'état de l'unité
CHKDSK : Vérifie et corrige le disque dur
XCOPY : Copier une arborescence complète
DELTREE : Supprime une arborescence
DOSKEY : garde en mémoire les commandes tapées.
F7 : Affiche l'historique
Alt + F7 : Supprime l'historique
doskey /history > test.txt : Envoie les commande tapées dans un fichier .txt
> : Vers le fichier
< : A partir de
CHCP : Donne la page de code actif (France 850)
GRAFTABL : Caractère étendu
TITLE : Permet de changer le titre d'une fenêtre
COLOR : Change la couleur du fond d'écran et de l'écriture
DISKCOMP : Comparer le contenu de deux unités
RECOVER : Récupération d'infos lisibles sur une unité défectueuse.
FC ou COMP : Compare le contenu de deux fichiers
FINDSTR : Recherche de chaîne de caractères
VERIFY : Vérifie l'écriture sur disque du fichier
CACLS : Droits sur les fichiers
AT : Taches planifiées
MODE : Permet de configurer les périphériques systèmes
CONVERT : Converti le FAT en FAT32 ou NTFS
COMPACT : Compression des fichiers en NTFS
SUBST : Créer ou supprimer un lecteur logique
DATE : Permet d'afficher la date et de la modifier
TIME : Permet d'afficher l'heure et de la modifier
CLS : Efface l'écran
VER : Affiche la version du DOS
MEM : Donne toutesinfos sur les mémoires
CTRL + C : Interrompre une commande
CTRL + S : Pause de la commande
CTRL + X : Force l'interruption de la commande (si CTRL + C échoue)
| (Alt GR +6) : (Pipe) Permet de séparer/taper deux commandes à la suite
cd ../../.. : Revenir en arrière plusieurs fois
cd \ : Revenir à la racine
dir *.* /p /q/ s : findstr test : recherche test dans les sous-dossiers (par page, rapidement)
dir *.* /p /q/ s /od : findstr test : recherche test dans les sous-dossiers et classe les résultats par date
>> : met à la suite
fichier.txt > dossier(\essai.txt) : Crée un fichier . txt de même nom ou pas, mais vide.
Echo coucou > fichier.txt : Insère coucou dans fichier.txt
type fichier1.txt > fichier2.txt : Copie ce qu'il y a dans fichier1 vers fichier2
echo/ : saut de ligne (en batch)
echo/ > toto.txt : Crée un fichier toto.txt vide
echo > toto.txt : Crée un fichier toto.txt avec « commande activé » écrit
xcopy /h /e /i : D:\I386 C:\system\i386 : Copie tout le répertoire I386 avec ses fichiers et ses sous-répertoires ainsi que les fichiers cachés dans un autre répertoire.

Fichier de commandes : (BATCH)
Se terminant en .BAT ou .CMD ces fichiers nous permettent d'automatiser des tâches. Ce sont des scripts.
Différents éditeurs de texte peuvent être utilisés comme EDIT, l’éditeur en ligne de commande de MS-DOS, le bloc-note de Windows ou un éditeur tiers comme notepad++.

Instructions spécifiques :
REM : Mettre un commentaire
ECHO : Affichage de commande à l’écran
ECHO OFF : Pas de visualisation
ECHO ON : Rétablissement de la visualisation
ECHO « message » : Permet d'afficher la variable saisit à l'écran, ici message
PAUSE : Suspend l’exécution d'un fichier (« appuyer sur une touche pour continuer »)

Exécution conditionnelle : IF
IF [NOT] CONDITION COMMANDE
Exemple : IF exist test type test.txt
(else) echo fichier non existant
(end if)
IF permet de tester l'existence et de comparer une variable à une valeur.
Exemple : if "%n"!== "" (si %n est différent de rien)

Instruction de saut : GOTO
GOTO est associée à une chaîne de caractères alphanumériques appelée LABEL (étiquette).
GOTO fonctionne avec la commande IF.
Exemple :
Test_dir.bat %1
@echo off
echo Ceci est un test de dir
if exist %1 goto suite
dir > %1
echo 2ème essai effectué
type %1
goto fin
:suite
type %1
echo Je suis la
:fin
pause

Instruction de décalage de paramètre : SHIFT
Cette instruction permet de parcourir et de traiter des paramètres.
Après chaque instruction shift, le paramètre réel 1 disparaît, le paramètre réel 2 devient 1.
Exemple : Lister dans un fichier texte, les fichiers dont les extensions sont passées en paramètres.
Exécuter cette commande : COMANDE EXT EXT EXT
extension.bat exe log ini
@echo off
rem Ce batch reprend les extensions passées en paramètres exe log ini
rem et les listes dans un fichier texte
cd \windows
if "%1"=="" goto erreur
dir *.%1 >list.txt
:Boucle
@echo fichier de type %1
pause
shift
if "%1"=="" goto suite
dir *.%1 >>liste.txt
goto Boucle
:suite
type liste.txt | more
goto fin
:erreur
@echo paramètre inexistant
:fin
pause

Instruction sur liste de valeur ou de fichiers : FOR
FOR %VARIABLE IN (ENSEMBLE) DO COMMANDE [PARAMETRE]
Dans un fichier de commandes, il faut spécifier %%variable au lieu de %variable pour faire la différence entre les paramètres.
Ensemble : Ensemble de valeurs, de fichiers séparés par des espaces
Commande : Commande à exécuter pour chaque valeur
Paramètre : Liste des paramètres ou options pour la commande spécifiée.
Exemple : Supprimer les fichiers temporaires
@echo off
for %%i in (tmp bak) do del c:\documents and settings\asr\local settings\temp\*.%%i

Commande d'environnement : SET
L'instruction set affiche, définit ou supprime des variables d'environnement.
SET (sans option) : Affiche les variables en cours
SET VARIABLE : X : annule ou défini la valeur d'une variable
Créer une variable t : set t=%userprofile%\local settings\temp
Exemple :
@echo off
cls
echo Veuillez entrer votre nom
set /p name = %name%
echo Veuillez entrer votre age
set /p age = %age%
if "%name%"=="" goto erreur1
if "%age%"=="" goto erreur2
echo Vous vous appelez %name% et vous avez %age% année.
:erreur1
echo Vous n'avez pas spécifié votre nom
set /p name=%name%
:erreur2
echo Vous n'avez pas spécifié votre age
set /p age=%age%
:fin
pause

Retour de commande : ERRORLEVEL
Errorlevel : code retourné par un programme ou une commande externe de MS-DOS qui est récupéré par l’interpréteur de commande.

Exemple :
@echo off
cls
format a : q/
if errorlevel 1goto erreur
goto ok
:erreur
echo/
echo erreur lors du formatage
goto fin
:ok
echo/
echo formatage effectué avec succès
goto fin
:fin
pause
Errorlevel ne fonctionne uniquement si une commande a déjà retourné une valeur avant (ici format).
Si une commande s'effectue avec succès, elle retourne 0, sinon elle retourne une valeur supérieure.
Errorlevel fonctionne uniquement avec IF et CHOISE.