3 FICHIERS BATCH
31 GENERALITES
 

 

Q Qu'est-ce qu'un fichier BATCH ?
R Batch veut dire "lot" en anglais. Un fichier batch est un programme écrit en mode texte et qui a l'extension ".bat". Il permet de lancer une ou plusieurs commandes DOS à la suite l'une de l'autre, et ainsi d'automatiser des tâches fastidieuses. Exemple, le fichier suivant, que l'on appellera repare.bat : 

scandisk /surface /custom /autofix /nosummary 
defrag c: /f /skiphigh 

permettra à votre ordinateur de faire une maintenance complète de votre disque dur sans que vous soyez planté devant à attendre que la machine vous demande des instructions :-) (Petite précision cependant : il vous faudra d'abord paramétrer scandisk correctement en éditant le fichier scandisk.ini.)

   
Q Comment écrire des batches ?
R Utilisez un éditeur de texte. Notepad de Windows fera parfaitement  l'affaire, à condition de ne pas taper de caractères accentués. Sinon, utilisez le programme EDIT du DOS.
   
Q Je voudrais apprendre à faire des fichiers BATCH.
R Achetez l'excellent livre de Franck Lohéac, Les fichiers Batch sous MS-DOS publié chez Marabout Informatique ou allez voir les pages de Nicolas : http://www.multimania.com/nlsn/
 
32 TECHNIQUES AVANCEES

 

Q Comment résoudre un problème particulièrement ardu en batch ? 
R Personne n'a su vous répondre dans le forum fr.comp.os.msdos ? Admettons.  
Alors : 
    Téléchargez ce document (merci à Sylvain Jeanneret) 
http://perso.wanadoo.fr/samuel.gaze/commun/batch.zip  
    Voyez la faq du site http://bigfoot.com/~batfiles/  
    Téléchargez celle de Timo Salmi : ftp://garbo.uwasa.fi/pc/ts/tsbat58.zip lequel Timo Salmi a aussi commis cette page de liens pour compléter votre culture des batches : http://www.uwasa.fi/~ts/http/http2.html#batch  
Les trois dernières adresses sont malheureusement en anglais.  

Si malgré tout ça ne vous suffisait pas encore, les pros du bath se retrouvent sur alt.msdos.batch et sur alt.msdos.batch.nt  
Si tout ça ne répond pas à votre demande, vous êtes irrécupérable, ou alors il n'y a pas de solution à votre problème ! 

   
Q Récupérer l'heure ou la date dans une variable.
R avec un batch un peu tordu, utilisant sadiquement certaines fonctions, on peut :  
* settime.bat:  
command /e:2000 /c for %%i in (1 2) do prompt set _t=$t$_ | find "$" /v >{t}.bat 
for %%c in (call del) do %%c {t}.bat 
(en 2 lignes : la première commence par "command", la 2è par "for %%c") 

* setdate.bat:  
command /e:2000 /c for %%i in (1 2) do prompt set _d=$d$_ | find "$" /v >{t}.bat 
for %%c in (call del) do %%c {t}.bat 
(en 2 lignes : la première commence par "command", la 2è par "for %%c")

   
Q Récupérer le répertoire courant dans une variable
R C'est le même principe que ci-dessus : modification du PROMPT, redirection dans un batch que l'on exécute deux fois : 
@ echo off 
rem>#a#.bat 
set oldprompt=%prompt% 
prompt set rep$q$p 
command /c #a#.bat>#b#.bat 
call #b#.bat 
set prompt=%oldprompt% 
set oldprompt= 
del #?#.bat
Q Est-il possible de faire un programme batch qui demande en cours d'exécution des instructions à l'utilisateur, comme par exemple l'instruction "input" du BASIC ?
R Les batches sont théoriquement faits pour s'exécuter par lot. Ce ne sont pas des rogrammes 
interactifs. Mais comme rien n'est impossible avec le système D, voici le principe : 

Pas de problème mais juste un peu de jugeotte... 
Prenons pour exemple : 
1) Le fichier UN.TXT qui contiendra : set variable= 
ATTENTION POUR LE CREER FAIRE : copy con UN.TXT 
TAPER A LA QUEUE LEULEU : set variable=^Z ET VALIDER 
2) Le fichier DEUX.TXT sera créé par la première BAT : Cette 1ère BAT, qui peut s'appeler 
UN.BAT, contiendra les instructions : 
@echo off 
Echo Taper la valeur de votre variable, appuyez sur Entrée puis F6 et 
Entrée 
copy con DEUX.TXT 
copy /b UN.TXT+DEUX.TXT+TROIS.TXT DEUX.BAT 
(Pour que cela soit plus propre, après la copie binaire ajouter >nul.) 
3) Le lancement se fera par UN. 
4) Le fichier DEUX.BAT est créé par copie binaire. 
(Le fichier TROIS.TXT contiendra par exemple : > echo %variable%) 

(Merci à Denis Blomme)