GendNetClub

Le portail des forces de police et gendarmeries francophones
La gestion des fichiers avec MS-Dos

SOMMAIRE

Retour à la page d'accueil de GendNetClub

Obtenez la légende des pictogrammes du site LEGENDE

TUTORIAL

Sommaire de la rubrique Tutorial

CONTACT

PRÈLUDE

Avant propos, historique, cursus et versions de DOS

FAVORIS

COMMANDES

Les commandes de base, la manipulation des répertoires et des fichiers

RECOMAIL

CONFIGURATIONS

Attribus des fichiers et répertoires, configurations matérielles et système

LIVRE D'OR

OPTIONS AVANCÉES

Gestion, configuration et programation avancée, matérielle et logicielle

QUI SUIS-JE ?

 

 

SUGGESTIONS

 

 

AUTRES LIENS

ACTUALITÉ VIRUS

Les dernières nouvelles (actualité, alertes virales, etc.)

LiveChat

NEWS DU SITE

Toutes les informations et nouveautés de GendNetClub.

FORUM

 

ICQ UN : 13123288

| Créer un fichier | Copier un fichier | Effacer un fichier | Déplacer un fichier | Renommer un fichier |

| les caractères génériques | Versions et interpréteurs | Lancer un programme | La variable "PATH" |

| Fichier de commande "BATCH" | Création d'un fichier "BATCH" | Echo et @ | Commentaires dans un BATCH |

| Interruption d'un fichier "BATCH" | Arguments d'un fichier "BATCH" | Les variables d'un fichier "BATCH" |

| Label dans un fichier "BATCH" | Exécution conditionnelle dans uns fichier  "BATCH" | Boucle dans un fichier "BATCH" |

 | Implémentation d'un fichier "BATCH" | Une pause dans l'éxécution d'un fichier "BATCH" |

Dialogue pendant l'execution d'un "BATCH" | Exemple utile |

 

  Gestion des fichiers : créer, copier, effacer, déplacer, renommer

  1.  Créer

  Gérer des fichiers, c'est pouvoir les créer, les déplacer, les copier, et même les effacer.

  Toutes ces tâches peuvent être (dans une certaine restriction) effectuées avec l'interpréteur DOS.

  Nous pouvons créer des fichiers avec le programme EDIT, aisément assimilable à une commande externe, car il est quasiment indispensable.

 

   On peut aussi créer rapidement un fichier texte ASCII avec les filtres du DOS, mais cela est plus complexe à comprendre et à expliquer.

Un exemple tout de même : essayez "COPY CON: T.TXT".

  Tapez tout ce qui vous passe par la tête, et terminez en validant un CTRL-Z.

Vous avez créé un fichier nommé "T.TXT" contenant ce que vous venez de taper. En fait, le clavier est assimilable à un fichier nommé "CON:".

Pour résumer, nous avons copié un fichier clavier en un fichier "T.TXT".

 

  1.  Copier

  La commande interne "COPY" permet de copier des fichiers.

  Pour cela, vous devez désigner un fichier et une destination.Cette commande peut être dangereuse si elle est mal utilisée.

En effet, vous pouvez envisager d'écraser un autre fichier portant le même nom, ou même un autre nom si vous avez désigné une destination avec un nom de fichier. Pour exemple, copions le fichier "AUTOEXEC.BAT" dans le répertoire "DOS".

   Cela nous donne :

"COPY C:\AUTOEXEC.BAT C:\DOS"

 

  Le premier paramètre de notre commande "COPY" désigne le fichier à copier.

  Le second désigne le répertoire de destination.

  Si ce répertoire ne devait pas exister, le fichier sera copié en un nouveau fichier nommé "DOS". Les fichiers "AUTOEXEC.BAT" et "DOS" seront les mêmes au nom de fichier près.

Pour une information plus précise sur la commande "COPY", je vous propose de saisir la ligne suivante : "HELP COPY" pour des DOS antérieur à la version 7, et "COPY /?" pour les autres, ou pour un interpréteur différent du COMMAND MS-DOS (genre Norton Dos).

 

Voici néanmoins la syntaxe de la commande "COPY" pour un DOS 3.3 :

 

   COPY [/A¦/B] source [/A¦/B] [+ source [/A¦/B] [+ ...]][destination [/A¦/B]] [/V]

 

  Source et destination, peuvent être un nom d'unité, un répertoire, un nom (ou masque) de fichier ou une combinaison de ces éléments.
  Les commutateur /A et /B désigne l'état des fichiers à copier. Il s'applique à la spécification du fichier les précédant et restent actifs jusqu'à ce qu'un autre commutateur soit rencontré. Dans le cas où le commutateur est déclarer en premier, il agie simplement sur les fichier le succédant.


/A : fichier texte : la copie du fichier s'arrête dès qu'un caractère CTRL-Z (27, 1Ah) est trouvé. Ce caractère n'est pas copié. Pour le fichier destinataire, un CTRL-Z est ajouté à la fin du fichier.
/B : fichier binaire : le fichier est copie entièrement.
/V : demande une vérification de la copie.

  1. Effacer

Pour effacer un fichier, nous utiliserons la commande "ERASE", ou "DEL" abrégé de 'delete', suivit du nom de fichier.

  1. Déplacer

Pour déplacer un fichier, nous pouvons utiliser la commande interne "COPY" suivit de la commande interne "DEL". Mais il sera plus simple d'utiliser la commande externe "MOVE". Cette commande prend le même style de paramètres que la commande "COPY".

  1. Renommer

Il peut aussi être intéressant de renommer un fichier. Nous avons à cet effet, la commande interne "RENAME", "REN" en abrégé. Pour renommer un répertoire sous MS-DOS, nous utiliserons la commande externe "MOVE".

Dans d'autres interpréteurs, il est souvent possible d'utiliser aussi la commande "REN", ce qui semble plus intelligent.


 

 

  Masque, caractère générique

Lorsque l'on désire faire référence à plusieurs fichiers à la fois, il est possible d'utiliser les caractères génériques (joker) point d'interrogation et étoile : "?" et "*". Un point d'interrogation permet de remplacer tous les caractères à l'endroit où il est placé, alors que l'étoile remplace tous les caractères suivant sa position.

Comprenons par l'exemple:

Si je désire lister l'ensemble des fichiers portant un nom commençant par la lettre "C", je vais saisir la ligne suivante : "DIR C*.*". En fait, l'interpréteur va remplacer les étoiles par autant de points d'interrogation qu'il peut mettre pour compléter un nom de fichier. C'est-à-dire, que "C*.*" sera transformé en "C???????.???". Comme les points d'interrogation sont des caractères génériques, ils peuvent être remplacés par n'importe quel autre caractère. Ainsi, la commande "DIR" affichera tous les fichiers ayant un "C" en première position.

 

Par exemple : "CHKDSK.EXE, CHOICE.COM, COUNTRY.SYS".

Autre exemple : "DIR MO?E.C*", affichera "MODE.COM, MORE.COM".

 

  Version du DOS, et interpréteur

Il peut être intéressant de connaître la version du DOS, pour savoir quelles sont les commandes internes et externes disponibles. Il faut savoir que beaucoup de commandes externes ont évoluées, disparues, apparues, voire mêmes changées de nom au cours des versions du DOS.

Avec la commande interne "VER", vous affichez le numéro de version de votre DOS ainsi que le nom et version de votre interpréteur si ce dernier n'est pas l'interpréteur MS-DOS standard.

 

  Lancer un programme

L'interpréteur ne permet pas seulement de gérer les fichiers, il permet aussi d'exécuter des programmes. Ces derniers sont des fichiers dont l'extension (et l'ordre de priorité) est "COM", "EXE" ou "BAT". Il est intéressant de remarquer que les commandes externes sont en fait des programmes, car se sont des fichiers portant l'une de ces extensions.

Nous pouvons donc exécuter un jeu, ou un utilitaire, en tapant simplement le nom du fichier. Nous omettrons volontiers l'extension de ce programme, à une exception près : si nous avons par exemple des programmes "GO.COM" et "GO.EXE" dans le même répertoire, l'interpréteur exécutera le "GO.COM" si nous omettons l'extension.

Ceci provenant de l'ordre de priorité. Pour exécuter le "GO.EXE", il faudra l'écrire de toutes lettres.
L'interpréteur peut interpréter des fichiers de commandes dont l'extension est "BAT". Ces derniers sont en fait un regroupement de commandes dans un même fichier.

 

  PATH - recherche de programme

L'interpréteur peut exécuter des commandes externes, qui sont en réalité des programmes. Ces derniers ne sont pas forcément dans le répertoire courant.

En réfléchissant, il n'y a aucun intérêt d'obliger l'utilisateur de stocker ces programmes dans un répertoire unique. De ce fait, l'interpréteur propose une variable dans laquelle l'utilisateur y placera les chemins des recherches dans l'ordre de lecture séparés par un point virgule. Cette variable porte le nom "PATH".

A l'exception des autres variables (§ BATCH - variable), "PATH" est aussi une commande interne. En faite, cette commande affecte la variable "PATH".

Exemple : "PATH C:\BATCH;C:\DOS".

 

  Les fichiers BATCH

Un fichier BATCH, ou fichier de commande, est un regroupement de commandes. Dans un fichier BATCH, nous pouvons utiliser des commandes qui seraient inutiles en saisie directe. C'est le cas des commandes conditionnelles, d'affichage, d'attente, de branchement et aussi de boucle. Un fichier BATCH (*.BAT) peut être exécuté comme une commande externe, avec des paramètres, si vous en avez l'utilité.

Les quelques paragraphe qui suivent, listerons les commandes internes relatif au programme BATCH : "Echo", "For", "Goto", "If", "Pause", "Rem", "Shift", "Call", "Break" ...

  1. Création

Pour créer un fichier BATCH, je vous conseille d'utiliser le programme EDIT du DOS. Exemple commenté d'un fichier de commande :

@Echo off
Cls
Echo Coucou, c'est moi.
Pause
Ver

 

La première ligne est pour moi indispensable. Elle indique à l'interpréteur de ne pas afficher sur l'écran les commandes qui vont être exécutées. Cela permet une transparence du traitement. Vous pouvez l'enlever ou bien la mettre en remarque (ce qui revient au même) en insérant "REM" devant "@Echo off" pour rétablir l'affichage des commande exécuter. Je pense que vous devriez essayer pour comprendre le phénomène. La deuxième ligne efface l'écran ; rien d'extraordinaire. Ensuite, nous affichons un message à l'écran avec la commande "ECHO" puis nous attendons l'appui d'une touche. Et pour terminer, nous affichons la version du DOS. Moralité, ce programme (fichier de commande) n'a aucune utilité autre que d'être un exemple.


  1.  Echo, et @

La commande "Echo" permet d'affiche à l'écran une ligne de texte. Je dis "une ligne", car une fois le texte affiché, il y a automatiquement un retour à la ligne : c'est-à-dire, que deux commandes "echo" successives, afficherons deux lignes, l'une en dessous de l'autre.

La commande "echo" permet aussi d'informer l' interpréteur de commande, que nous ne désirons pas qu'il affiche les lignes du programme BATCH.

La commande "@" permet d'informer l'interpréteur que la ligne ne doit pas être affiché à l'écran, même si la commande "echo" est sur "on".

Syntaxe : "Echo off" pour ne pas afficher les lignes du fichier de commande. La commande "echo" est sur "on" par défaut.


  1. REM, Remarque

Dans un fichier de commande, vous pouvez insérer des commentaires, grâce à la commande interne "REM".


  1. Break

La commande interne "Break" autorise (ou non) l'utilisateur d'interrompre un fichier de commande avec les touches d'interruption "CTRL-C" ou "CTRL-BREAK".

Syntaxe : "Break ON/OFF"


  1.  Les paramètres (arguments)

Un fichier BATCH peut avoir plein de paramètres, à concurrence de 127 caractères sur la ligne de saisie. Dans le fichier, nous ne pouvons accéder qu'à dix paramètres à la fois avec les variables argument %0, %1, %2, %3, ... , %9.

La variable %0 représente à l'origine, le nom du fichier BATCH, ou plus précisément la saisie au prompt du nom avec le chemin tapé. Pour atteindre les autres paramètres, nous devrons utiliser la commande interne "SHIFT", qui permet de cycler les paramètres.

Ainsi, le contenu de la variable %1 sera positionné dans la variable %0, ..., le contenu de %9 dans %8, et ainsi, le paramètre suivant qui n'était pas accessible sera placé dans %9.


  1. Les variables

Avec la commande interne "SET", vous pouvez définir et affecter des variables textes. Ces variables sont conservées tant qu'elles ne sont pas effacées, même après la fin d'un fichier BATCH. Ce ne sont pas des variables locales au fichier de commande, mais bien des variables globales.

Exemple : "SET V=M??E.*" définit et affecte la variable texte "V" de la valeur "M??E.*".

Pour changer de valeur, il suffit d'affecter de nouveau la variable : "SET V=LO*.*". Puis, pour effacer la variable, il suffira d'affecter une valeur vide : "SET V=".

Une fois cette variable définie, nous pouvons accéder à son contenu en utilisant son nom entre deux caractères % : "Echo %V%" affiche le contenu de la variable "V".

Je vous conseille d'effacer vos variables dès que vous n'en avez plus besoin.

Attention. Il existe d'autres variables qui sont utilisées en local; elles sont du format "%i" ou "%%i", cela dépend de interpréteur, et de sa version. On les trouve dans les boucles "FOR" par exemple (défini plus loin). J'ai pris "i" comme exemple ; vous pouvez utilisez un autre nom.


  1. Label / branchement

Un label est un marqueur désignant une ligne dans un fichier de commande.

Un label est utilisé de paire avec la commande de branchement "GOTO". Un label commence par un caractère deux points ( ou : ), suivit d'un nom.

Exemple :


@Echo Off
... ...
Goto L1
... ...
:L1
... ...

 

Lorsque l'interpréteur rencontre la commande "GOTO L1", il poursuit sont interprétation après la ligne désignée par le label (il saute au label).


  1. Test

Un test, c'est la possibilité d'exécuter un traitement si le résultat comparant deux éléments est vérifié.

Il est engendré par la commande "IF" dont voici ces paramètres et sa structure :

IF [NOT] ERRORLEVEL nombre commande
IF [NOT] chaîne1==chaîne2 commande
IF [NOT] EXIST fichier commande


NOT

Spécifie que l'interpréteur exécute la commande seulement si la condition est fausse

ERRORLEVEL nombre

Condition vraie si le dernier programme exécuté a renvoyé un code de sortie supérieur ou égal au nombre spécifié.

Commande

Commande à exécuter si la condition est satisfaite.

Chaîne1==chaîne2

Condition vraie si les chaînes spécifiées concordent.

EXIST fichier

Condition vraie si le fichier spécifié existe.


Exemple de code :


@echo off
IF "%1"=="" GOTO Err
Echo Le paramètre est : "%1"
Goto Fin
:Err
Echo Entrez un paramètre.
:Fin


  1. Boucle

Une boucle, c'est la possibilité de répéter plusieurs fois une opération sur un élément d'un ensemble définit.

Souvent, l'ensemble est défini avec les noms de fichiers, mais il peut aussi être du texte, voir des paramètres.

Cette boucle est engendrée par la commande "FOR".

Syntaxe : FOR %variable IN (ensemble) DO commande [paramètre]


%variable

Paramètre remplaçable.

(ensemble)

Ensemble de fichiers séparés par des espaces. Caractères génériques permis.

Commande

Commande à exécuter pour chaque fichier.

paramètre

Paramètres ou commutateurs pour la commande spécifiée.


 

Pour utiliser FOR dans les fichiers de commandes, spécifiez %%variable au lieu de %variable.

Exemple compliqué : recherche la localisation de lui-même (le fichier BATCH) sur les disques du système. Nous admettrons que l'utilisateur saisisse au prompt seulement le nom du fichier de commandes.


 

Set DD_OLI=
For %%i in (C D E F G) do If "%DD_OLI%"=="" If exist %%i:\BATCH\%0.BAT SET DD_OLI=%%i

 

J'initialise à vide la variable DD_OLI, au cas où elle existerait déjà. Puis, je recherche successivement dans les disques durs la présence du fichier de commande (moi-même, vu par le fichier). Dès que je me trouve, j'affecte la variable DD_OLI du nom de l'unité dans lequel je me suis trouvé.

- Il est possible que je trouve un fichier portant le même nom que moi, sans pour cela que se soit moi ! Certes, mais sur mon propre ordinateur, j'évite autant que je peux, d'avoir des fichiers de commande portant le même nom. Pourquoi rechercher la localisation du fichier de commande ? parce que ce disque est amovible, et qu'il peut porter n'importe quelle lettre de lecteur, lorsqu'il est inséré dans un autre ordinateur.

- Une fois le fichier de commande trouvé, la variable DD_OLI est affecté. Dès lors, le test d'existence ne sera plus effectué car DD_OLI n'est plus vide.

Comme il n'est pas possible de quitter la boucle, j'utilise un test sur le contenu de la variable. S'il était possible de quitter la boucle, j'aurai plutôt écris un truc du genre :


For %%i in (C D E F G) do If exist %%i:\BATCH\%0.BAT GOTO Trouvé


  1. Call

Dans un fichier BATCH, on peut désirer faire traiter une opération par un autre fichier de commande déjà existant. Pour cela, nous utiliserons la commande interne "CALL" suivie du nom du fichier de commande.

Si nous omettons cette commande, le fichier BATCH ainsi appelé interrompt automatiquement l'exécution de l'appelant. C'est-à-dire, que la commande "CALL" informe l'interpréteur d'exécuter un BATCH comme étant un sous-programme. Sinon, l'appel sera interprété comme étant un branchement conditionnel ou un saut (goto) dans un nouveau programme.


  1. Pause

La commande "PAUSE" affiche un message à l'écran, jusqu'à ce que l'utilisateur appui sur une touche. Il est possible de ne pas afficher le message, en le détournant avec un filtre, vers une sortie nulle : "PAUSE >NUL", attends l'appui d'une touche, sans afficher le message. L'information sur ce sujet sera donnée dans le paragraphe des filtres.


  1. Choice / ErrorLevel

Le programme "CHOICE", intégré dans le MS-DOS depuis la version 5.x (à vérifier), permet à un utilisateur de concevoir un menu dans un fichier BATCH.

Ce programme retourne un code de sortie de programme (code d'erreur, plus précisément) suivant la touche enfoncée. Il est désolant de remarquer l'ajout de ce programme, or qu'il aurait sûrement été plus intelligent de faire évoluer la commande "PAUSE" dans ce sens, vu qu'elle ne prend actuellement aucun paramètre dans l'interpréteur MS-DOS (ce qui n'est pas forcément le cas dans d'autres interpréteurs). Pour gérer ces codes de retour, la commande "IF" possède une instruction spécifique : "ErrorLevel".

Cette instruction est vérifiée, si le code d'erreur retourné par le dernier programme exécuté est supérieur ou égal à la valeur spécifié. Un exemple sera sûrement plus parlant:

@Echo Off
:Menu
Cls
Echo 1) Idos 2) EdiPage
Choice /C:12² /N Quel programme voulez vous lancer [² pour quitter]:
If ErrorLevel 3 Goto Fin
If ErrorLevel 2 goto l2
If ErrorLevel 1 goto l1
Goto Menu

:L1
C:\OUTILS\IDOS
Goto Menu
:L2
C:\OUTILS\EdiPage
Goto Menu
:Fin


D'après la documentation Microsoft, "CHOICE" retourne un "ErrorLevel 0" à la suite d'une interruption par les touches de contrôle CTRL-C ou CTRL-BREAK. Après essai, il semble que "CHOICE" retourne l'erreur 255 (de même, lorsqu'une erreur se produit).


Comment ajouter un chemin à la variable "PATH", pour la recherche de programme exécutable dans fichier "BATCH".


@echo off
If "%1"="" GOTO Err
Set PATH=%1;%PATH%
Goto Fin
:Err
Echo %0 [nouveau chemin de recherche]
:Fin

 

|   TUTORIAL  DOS |  |

 

L'auteur décline tout incident résultant d'une mauvaise interprétation des documents que vous allez employer.
Tout les fichiers disponibles sont garantis à ce jour, sans virus connus

© Copyright Gendnetclub2000 - Tout droit de reproduction strictement réservé

Classement de sites - Inscrivez le vôtre!