# Traitement par lots

En informatique, un traitement par lots (batch processing en anglais) est un enchaînement automatique d'une suite de commandes (processus) sur un ordinateur sans intervention d'un opérateur.
Une fois que ce processus est terminé (quel que soit le résultat), l'ordinateur traite le lot suivant. Le traitement des lots se termine une fois que tous les lots de la pile ont été exécutés.
Les premiers ordinateurs nécessitaient qu'un opérateur recable celui-ci entre chaque instruction. Plus tard, un ordinateur était capable de lire les instructions depuis une bande magnétique ou une carte perforée et exécuter les différentes instruction qui s'y trouvaient sans nécessiter la présence d'un opérateur. Ce traitement par lots a apporté un gain significatif dans l'ergonomie et l'efficacité des ordinateurs. Un lot d'instructions est donc l'ancêtre de ce qu'on appelle aujourd'hui un programme.
Lorsque les systèmes multitâches et les invites de commande sont apparus, le vocable de << traitement par lots >> a été repris pour désigner les scripts de terminal.

## Détails

Le déclenchement de ces traitements peut ainsi être automatisé, par exemple grâce au programme cron dans un système Unix. Les traitements par lots sont surtout utilisés pour des tâches automatisées, notamment pour la gestion des comptes sur le parc informatique d'une entreprise, d'une université… Les travaux lancés en lots n'utilisent que les cycles processeur non utilisés par les travaux interactifs. Les lots ont donc toujours une priorité d'exécution plus basse que les interactifs mais en revanche un temps d'exécution (time slice) plus élevé que les interactifs de façon à rester en mémoire principale le plus longtemps possible. Pourquoi le time slice est-il plus généreux pour un lot que pour un travail interactif ? Parce que lors d'un ordre de lecture de la base de données, le système charge dans le buffer plusieurs slots de façon à faire le moins possible d'accès disque, sachant qu'un accès disque provoque immédiatement une purge sur disque du lot qui devra attendre de revenir en mémoire pour continuer à s'exécuter.
La deuxième génération d'ordinateurs était exploitée exclusivement sous forme de traitement par lots, progrès sur l'utilisation en vacations de ceux de la première génération. La notion de système d'exploitation devint alors essentielle. Les ordinateurs étaient alimentés en entrée par des instructions encodées sur des cartes perforées et fournissaient les données de sortie sur des imprimantes (exemple : le système FMS).
Les terminaux interactifs en ligne de commande ne se sont répandus que vers le milieu des années 1960, lorsque le coût du temps machine est devenu suffisamment abordable — et donc a touché un plus vaste nombre d'utilisateurs potentiels — grâce à la troisième génération d'ordinateurs.
Les programmes de traitement par lots s'opposent aux programmes interactifs, ou transactionnels. Le transactionnel comme CICS sur les mainframes d'IBM n'est rien d'autre qu'un traitement batch qui par le biais du pooling donne la main à tour de rôle au terminal dont le bit est « on » dans une table, c'est-à-dire que le programme avec toutes ses données est ramené du disque en mémoire centrale, exécute la transaction et est immédiatement purgé de nouveau sur disque.
Un vrai traitement batch comprend des codes de condition permettant d'enchaîner les traitements comme un véritable programme (si… alors… sinon…). Un programme batch n'a pas besoin pour s'exécuter d'obtenir une réponse de l'utilisateur, il s'exécute en autonome. les travaux batch sont surtout lancés de nuit par les opérateurs système suivant le planning établi, ou bien par un robot sous surveillance d'un seul opérateur.

## Langage de commande DOS et Windows

Par abus de langage, un fichier batch est, sous le système d'exploitation Windows, un fichier (ou script) contenant une série d'instructions DOS. Ces fichiers, lorsqu'ils sont lancés, exécutent les commandes contenues dans le fichier.
Le mot batch désigne alors un langage anonyme, parfois appelé langage batch ou langage DOS, et qui est interprété par les exécutables cmd.exe et command.com, un sous-ensemble des shells unix comme bash ou ksh.
Le langage de commandes Windows est relativement lent car il n'est pas compilable et demande donc, au moment de l'exécution, une interprétation de ses commandes par cmd.exe et command.com, qui sont ensuite exécutées sur le processeur.
De par l'utilisation d'outils de haut niveau, un fichier de commandes peut aisément formater un disque ou supprimer un fichier.

### Exemple : Le renommage en masse

Le renommage en masse de fichiers ou de dossiers informatiques d'une façon automatique est un exemple de traitement par lots.
Pour effectuer ce genre d'opération, un logiciel spécialisé est utilisé. Ces logiciels peuvent avoir plus ou moins de fonctionnalités, mais certaines fonctions de base sont partagées.

### Fonctions de base

* Trouver une partie du nom et la remplacer ou l'effacer.
* Changer des lettres minuscules en majuscules et vice-versa.
* Ajouter une séquence numérique (001, 002, 003…).
* Ajouter la date et l'heure (actuelle ou prise du fichier ou dossier).
* Changer la longueur du nom.

### Exemple : L'arrêt planifié

* Lorsqu'un téléchargement ou une action (comme une défragmentation du disque dur ou une analyse par un antivirus) est en cours d'exécution, un arrêt planifié peut être programmé à l'aide d'un fichier Batch. Une seule commande est nécessaire : shutdown, la commande d'arrêt du PC. Pour créer votre fichier Batch, il vous suffit de lancer le Bloc-Notes de Windows et de taper cette commande en première ligne :
    shutdown /s /t [temps désiré en secondes]
* Cette commande permet d'éteindre l'ordinateur une fois que le temps désiré est écoulé. Par exemple, shutdown /s /t 180 fera s'éteindre l'ordinateur 180 secondes, soit 3 minutes après l'exécution du fichier Batch. Après avoir entré les commandes, enregistrez sous, avec le nom désiré, et l'extension .bat ou .btm (les plus utilisées).
* Après l'exécution du fichier, l'ordinateur planifiera un arrêt automatique dans 180 secondes. Lors d'un téléchargement, vous pouvez lancer un arrêt planifié à plus longue durée (1 h 30, 2 h…).

### Fonctions avancées

* Extraction d'information (comme étiquettes ID3 de MP3 ou EXIF de JPG) et les placer dans le nom.
* Ajouter une séquence alphabétique (a, b, c, d…).
* Suppressions de fichier temporaire.
* Création de petits programmes, ex : installeur.

### Commandes externes

Les commandes externes sont des fichiers (au format .bat, .cmd ou .exe).
Voici une liste (non exhaustive) de commandes externes directement fournies par Microsoft avec Windows :
* Ping.exe
* Defrag.exe
* Debug.exe (en) (présente uniquement sous les versions 32 bits de Windows car travaille en 16 bits)
* Net.exe
* Certutil.