Aller au contenu principal

Les fichiers batch

Un fichier de commande est un fichier texte qui contient des commandes en mode invite de commande. On le surnomme fichier batch ou batch file, il possède l'extension .bat ou .cmd. À l'époque du DOS jusqu'aux premières versions de Windows, c'est le fichier autoexec.bat qui s'exécutait à la fin du démarrage du DOS et lançait l'exécution de Windows.

Les fichiers batch sont interprétés par l'interpréteur de commande, c'est-à-dire qu'ils s'exécutent de la première à la dernière ligne une à la suite de l'autre. Cet interpréteur était le programme COMMAND.COM que l'on connaît depuis les débuts du DOS, il est devenu CMD.EXE depuis Windows NT.

La majorité des commandes se situent soit dans des commandes DOS traditionnelles ou au travers de conditions et de boucles: IF et FOR.

On utilise les fichiers de commande pour créer des procédures automatiques pouvant être lancées par des personnes qui en ignorent les détails ou pour automatiser des séquences fréquemment utilisées: comme par exemple, suite à votre connexion: monter un disque réseau, copier des polices dans le répertoire des polices de l'utilisateur afin d'uniformiser les polices de l'entreprise, etc.

Aujourd'hui, l'IA peut écrire à votre place un script batch complet, boucles et conditions comprises. Ce qui reste essentiel pour vous n'est donc pas de mémoriser la syntaxe de chaque commande, mais de comprendre ce que font les commandes de base, pour être capable de lire, valider et corriger un script généré par l'IA.

Commandes​

ECHO​

La commande Echo peut vous offrir deux fonctionnalités principales :

  • Afficher des messages à l'écran
  • Contrôler l'affichage des commandes
ECHO %VARIABLE%
REM Affiche la valeur de la variable

ECHO Ami
REM Affiche "Ami" (les guillemets ne sont pas nécessaires)

ECHO.
REM Affiche un saut de ligne (enter)

ECHO OFF
REM Désactive l'affichage des commandes suivantes

ECHO ON
REM Réactive l'affichage des commandes

MS-DOS affiche généralement chaque ligne du fichier de commande au moment où il les interprète, juste avant de les exécuter. Cet affichage des commandes peut être désactivé par la commande ECHO OFF ou réactivé par la commande ECHO ON. Le fichier de commande débute souvent par @ECHO OFF. Le @ masque l'affichage de cette ligne de commande. La suite de l'instruction, la commande ECHO OFF empêche l'écho des commandes suivantes.

@

Le @ placé en début de ligne dans un fichier de commande empêche l'affichage de celle-ci sans pour autant empêcher son exécution.

REM​

La commande REM, placée en début de ligne, a pour fonction d'introduire un commentaire dans le code du fichier de commande. Elle est aussi très pratique pour désactiver temporairement une ligne de commande.

Alternativement, on peut utiliser :: pour les commentaires (plus rapide à l'exécution).

PAUSE​

La commande PAUSE interrompt l'exécution du fichier de commande en affichant :

Appuyez sur une touche pour continuer...

Si ce message ne vous convient pas, vous pouvez le masquer en le redirigeant vers la sortie fictive NUL :

PAUSE > NUL

SET​

Les variables d'environnement sont des données auxquelles le système d'exploitation réserve une partie de la mémoire vive. Elles sont accessibles à n'importe quel programme. Parmi la liste des variables d'environnement, une bien connue est la variable PATH qui contient la liste des emplacements des fichiers exécutables accessibles en ligne de commande.

SET REM Affiche toutes les variables d'environnement
SET A REM Affiche toutes les variables dont le nom commence par A
SET A=chaîne REM Assigne la valeur "chaîne" à la variable A
SET A= REM Supprime la variable A (assigne une valeur vide)

Pour modifier une variable existante (comme PATH) :

SET PATH=%PATH%;C:\Utils

Attention aux espaces​

Les espaces autour du signe égal comptent dans l'affectation :

SET A = abc

Le nom de la variable comporte deux caractères : 'A' et un espace. La valeur de la variable en compte quatre : un espace, 'a', 'b', 'c'.

Calculs arithmétiques​

L'option /A permet d'évaluer une expression arithmétique et d'en attribuer le résultat à une variable :

SET /A variable=expression
SET /A varA=2+3 REM Donne 5

SETX​

La commande SET crée une variable d'environnement seulement pour l'exécution de la session courante. SETX permet d'en créer qui seront persistantes (sauvegardées dans le registre).

SETX MAVAR "MaValeur"

SETLOCAL et ENDLOCAL​

La commande SETLOCAL crée un environnement local pour les variables dans un fichier batch. Toutes les modifications de variables faites après SETLOCAL sont temporaires et n'affectent que le script en cours.

SETLOCAL
REM Les modifications de variables ici sont locales au script
SET MAVAR=Valeur temporaire
REM ...
ENDLOCAL
REM Retour à l'environnement précédent

ENDLOCAL restaure l'environnement précédent. Si vous ne mettez pas ENDLOCAL, il est automatiquement exécuté à la fin du script.

Pourquoi utiliser SETLOCAL ?

  • Évite de polluer l'environnement système avec des variables temporaires
  • Permet d'utiliser des variables temporaires sans risquer de conflits

Variables d'environnement système courantes​

Variable d'environnementDescription
%USERNAME%Nom d'utilisateur de la personne connectée
%USERPROFILE%Emplacement du profil de l'utilisateur
%PROGRAMDATA% et %PROGRAMFILES%Emplacements pour les données et les fichiers des programmes installés
%TEMP%Répertoire temporaire
%WINDIR%Répertoire de Windows
%PATH%Liste des répertoires contenant des fichiers exécutables
%COMPUTERNAME%Nom de l'ordinateur
%DATE% et %TIME%Date et heure actuelles

IF​

Soumet l'exécution d'une commande à une condition :

IF condition commande1 ELSE commande2

Pour les commandes multi-lignes, utilisez les parenthèses :

IF condition (
commande1
commande2
) ELSE (
commande3
commande4
)

Expressions conditionnelles​

CodeExplication
IF [NOT] ERRORLEVEL nombreSi le code de retour du programme précédent est ≥ au nombre indiqué
IF [NOT] DEFINED variableSi la variable est définie
IF [NOT] EXIST fichierSi le fichier ou dossier existe

Comparaisons de chaînes​

ComparaisonExplication
chaîne1 == chaîne2Si chaîne1 est identique à chaîne2
chaîne1 EQU chaîne2Si chaîne1 est égale à chaîne2
chaîne1 NEQ chaîne2Si chaîne1 est différente de chaîne2
chaîne1 LSS chaîne2Si chaîne1 est plus petite que chaîne2
chaîne1 LEQ chaîne2Si chaîne1 est inférieure ou égale à chaîne2
chaîne1 GTR chaîne2Si chaîne1 est supérieure à chaîne2
chaîne1 GEQ chaîne2Si chaîne1 est supérieure ou égale à chaîne2

L'option /I permet d'ignorer la casse lors des comparaisons. Si les deux chaînes ne contiennent que des chiffres, la comparaison est numérique au lieu d'être alphabétique.

FOR​

La boucle FOR permet d'itérer sur des collections d'éléments, par exemple une liste de fichiers :

FOR %%variable IN (collection) DO commande

FOR %%X IN (*.txt) DO ECHO %%X

Note : Dans un fichier batch, utilisez %%variable. En ligne de commande, utilisez %variable.

Il existe plusieurs variantes (/D pour les répertoires, /R pour parcourir récursivement, /L pour une séquence numérique, /F pour analyser un fichier ligne par ligne) — l'IA peut générer la variante appropriée au besoin ; l'essentiel est de reconnaître la structure de base ci-dessus.

Redirection​

Par défaut, la sortie des programmes s'affiche à l'écran. Il existe plusieurs flux de sortie :

  • Sortie standard (stdout) : 1> ou simplement >
  • Sortie erreur (stderr) : 2>
  • Entrée standard (stdin) : <

Exemples de redirection​

REM Rediriger la sortie vers un fichier (écrase le contenu)
ECHO TEST > test.txt

REM Ajouter à un fichier existant
ECHO "bonjour" >> file.txt

REM Rediriger les erreurs
DIR fichier_inexistant 2> erreurs.txt

REM Rediriger sortie standard ET erreurs
COMMANDE > sortie.txt 2>&1

REM Supprimer l'affichage (rediriger vers NUL)
COMMANDE > NUL 2>&1

REM Utiliser un fichier comme entrée
SORT < liste.txt

REM Pipeline (sortie d'une commande vers l'entrée d'une autre)
DIR | FINDSTR ".txt"

Redirection avancée​

REM Rediriger à la fois stdout et stderr vers le même fichier
COMMANDE > output.txt 2>&1

REM Séparer stdout et stderr
COMMANDE > output.txt 2> errors.txt

La base de registre​

Quand SETX rend une variable persistante, elle n'est pas gardée en mémoire : elle est écrite dans la base de registre (registry) de Windows. C'est cette base qui explique pourquoi une variable créée avec SETX est encore là après un redémarrage, alors qu'une variable créée avec SET disparaît à la fermeture de l'invite de commande.

La base de registre est une base de données hiérarchique qui centralise la configuration de Windows : paramètres du système, préférences des utilisateurs, informations sur le matériel et les logiciels installés, associations de fichiers, etc. Pratiquement toutes les modifications faites via le Panneau de configuration, les Paramètres, ou l'installation d'un logiciel finissent par écrire quelque chose dans le registre.

Structure​

Le registre est organisé en ruches (hives), chacune étant une clé racine :

RucheContenu
HKEY_LOCAL_MACHINE (HKLM)Configuration de la machine, valable pour tous les utilisateurs
HKEY_CURRENT_USER (HKCU)Préférences de l'utilisateur actuellement connecté
HKEY_USERS (HKU)Profils de tous les utilisateurs du système
HKEY_CLASSES_ROOT (HKCR)Associations de fichiers et informations pour les objets COM
HKEY_CURRENT_CONFIGProfil matériel utilisé au démarrage

À l'intérieur d'une ruche, l'information est rangée en clés et sous-clés (comme des dossiers), qui contiennent des valeurs (comme des fichiers). regedit.exe est l'éditeur graphique du registre : on y navigue comme dans l'Explorateur de fichiers, une ruche à la fois.

Chaque valeur du registre a un nom, un type et des données :

TypeDescription
REG_SZChaîne de caractères
REG_DWORDNombre entier 32 bits (souvent 0/1 pour activer/désactiver une option)
REG_BINARYDonnées binaires brutes
REG_MULTI_SZPlusieurs chaînes de caractères
REG_EXPAND_SZChaîne pouvant contenir une variable d'environnement (ex. %WINDIR%)

Consulter et modifier le registre​

regedit.exe est l'éditeur graphique du registre. On peut aussi le consulter et le modifier en ligne de commande avec REG, ce qui permet de l'intégrer dans un fichier batch :

REM Afficher une clé
REG QUERY "HKCU\Environment"

REM Ajouter ou modifier une valeur
REG ADD "HKCU\Environment" /v MAVAR /t REG_SZ /d "MaValeur" /f

REM Supprimer une valeur
REG DELETE "HKCU\Environment" /v MAVAR /f

REM Exporter / importer une clé (sauvegarde)
REG EXPORT "HKCU\Environment" backup.reg
REG IMPORT backup.reg

Attention : une modification du registre est appliquée immédiatement et sans confirmation. Une erreur peut rendre Windows instable, voire empêcher son démarrage — c'est pourquoi on exporte une clé avant de la modifier, et qu'on manipule le registre par script (REG) seulement une fois qu'on sait exactement quelle clé on cible.

Aujourd'hui, l'écriture des scripts eux-mêmes est en grande partie prise en charge par l'IA ; ce qui reste essentiel, c'est de comprendre ce qu'est le registre, sa structure et les risques liés à sa modification, pour être capable de lire, valider et corriger ce qu'un script (généré ou non) s'apprête à y faire.

Outils d'administration Windows​

Ces outils sont d'abord des interfaces graphiques (contrairement à CHKDSK, SFC ou DISKPART, vus au cours 4, qui sont d'abord des commandes). On les voit ici parce que chacun a un lien avec l'automatisation : soit il a un équivalent scriptable, soit c'est le genre de tâche qu'on automatise justement pour éviter d'avoir à l'ouvrir manuellement.

Gestion des utilisateurs et permissions​

En utilisant les interfaces graphiques, vous pouvez aisément gérer vos utilisateurs sur Windows par l'entremise des Paramètres -> Comptes. Vous pourrez gérer tous les utilisateurs du système, soit par compte professionnel ou scolaire ou les autres (familles et autres utilisateurs).

Les privilèges peuvent se mettre sur un dossier ou un fichier directement. Pour changer les permissions d'un fichier ou d'un dossier (et de tous les enfants), simplement cliquer sur le répertoire, choisir Propriétés et cliquer sur l'onglet sécurité (deuxième).

NomDescription
Contrôle totalDonne la permission de lecture, d'écriture, de changement et d'effacement pour le fichier ou dossier en cours et de tous les enfants. Cette permission permet aussi de modifier les permissions pour l'objet sélectionné et ses enfants.
ModificationDonne la permission de modifier le fichier et ses enfants (dans le cas d'un répertoire). Vous pouvez également effacer le fichier ou les enfants.
Lecture et exécutionPermet à l'utilisateur de lire et d'exécuter les fichiers exécutables (tout comme les scripts).
Afficher le contenu du dossierPermission utile seulement pour les répertoires afin de permettre de voir le contenu d'un répertoire, s'hérite par dossier parent à enfant.
LecturePermet de voir le contenu d'un fichier et ses permissions.
ÉcriturePermet d'écrire sur le fichier.
Autorisations spécialesPermet de choisir à la pièce les permissions.

icacls est l'équivalent en ligne de commande, ce qui permet de gérer les droits directement depuis un script :

icacls monfichier.txt /grant MonUtilisateur:F

(F = Full control)

UAC​

L'UAC est une fonctionnalité ajoutée à Windows qui s'assure que vous obtenez les droits d'administration au besoin. Dans le sens où tous les comptes de l'ordinateur s'exécutent en tant qu'usager jusqu'au moment où le compte a besoin de plus d'accès.

L'UAC, user access control, s'assurera que vous avez les permissions afin d'exécuter une requête administrateur. Si vous n'avez pas les droits d'accès nécessaires, il vous offrira la possibilité d'entrer un nom d'utilisateur et un mot de passe d'un compte administrateur afin de pouvoir exécuter votre requête.

Le bouclier représente l'utilisation d'UAC, afin de devenir administrateur. C'est aussi pour cette raison qu'un script batch qui manipule le registre, les partitions ou les services doit souvent être exécuté « en tant qu'administrateur ».

Mises à jour​

Certains types de virus utilisent des failles du système d'exploitation afin de s'y immiscer. Ces failles sont non seulement utilisées par les virus informatiques, mais aussi par les pirates informatiques. C'est pourquoi il est toujours préférable de ne pas utiliser de système d'exploitation dont la date d'expiration est passée (Windows 7, Windows 8, Windows 10).

Les failles s'appliquent autant aux ordinateurs de type bureau (Windows, macOS, GNU/Linux) qu'aux téléphones cellulaires (Android / iPhone).

Windows 11 offre un programme, nous facilitant la tâche, permettant de vérifier les correctifs manquants et de les appliquer. Pour ce faire, allez dans Paramètres -> Windows Update.

Les actions des pirates informatiques peuvent avoir des conséquences fâcheuses à la maison mais désastreuses pour une compagnie (vol de données, vol d'information personnelle, effacement des données, demande de rançon). C'est pourquoi, il est recommandé de garder à jour nos logiciels, surtout le système d'exploitation, en leur appliquant les correctifs nécessaires.

Firewall​

Un pare-feu (de l'anglais firewall) est un logiciel et/ou un matériel permettant de faire respecter la politique de sécurité du réseau, celle-ci définissant quels sont les types de communications autorisés sur ce réseau informatique. Il surveille et contrôle les applications et les flux de données (paquets). Le pare-feu bloque par défaut les connexions entrantes, mais rarement les connexions sortantes.

Sous Windows, avec la venue de Windows XP, un pare-feu a été mis en place et est généralement activé par défaut. Il s'assure que les paquets qui arrivent à votre ordinateur sont bien désirés.

Le pare-feu lui-même ne fait que filtrer le trafic réseau ; la protection contre les malwares et l'hameçonnage est plutôt assurée par un composant distinct, Microsoft Defender Antivirus (avec SmartScreen), lui aussi intégré et activé par défaut sous Windows.

Fait à noter que les pare-feu matériels sont largement plus dispendieux que les pare-feu logiciels. Ils procèdent à l'analyse de paquet de façon plus approfondie et l'OS d'un hôte ne peut être affecté.

Nettoyage de disque​

Lorsque vous travaillez avec Windows 11, celui-ci utilise beaucoup de dossiers et fichiers temporaires. Il en va de même pour certaines applications telles que Edge qui conservent une copie des pages visitées sur Internet, qu'on nomme le cache Internet ou tout bonnement cache. Ces dossiers et fichiers, à la longue, peuvent occuper de la place inutilement sur vos unités de stockage.

Rechercher tous ces dossiers et fichiers manuellement, afin de les supprimer, serait une tâche ardue. Le nettoyeur de disque effectuera cette tâche pour vous. Le cache Internet n'est pas le même pour Chrome ou Firefox ; il faudra voir dans les paramètres de ces applications.

Vous pouvez le trouver en recherchant directement « Nettoyage de disque » dans le Menu démarrer, ou via Paramètres -> Système -> Stockage, qui offre aussi la fonctionnalité Storage Sense pour automatiser ce nettoyage.

Suite à l'analyse de votre disque dur, celui-ci vous offrira quelques options permettant de spécifier ce que vous désirez nettoyer et vous indiquera l'espace total qui sera libéré suite au nettoyage.

Défragmentation de disque​

Lors de l'écriture de fichiers sur vos disques, le système d'exploitation recherche un espace libre dans l'espace de stockage aussi grand que la quantité de données qu'il a besoin d'écrire. Si jamais cet espace est introuvable en un seul bloc contigu, le système d'exploitation fragmente ce fichier et l'écrit sur plusieurs portions de bloc distinctes (non reliées).

Cette fragmentation ne crée pas un dysfonctionnement du système, mais exige du disque dur de se repositionner plusieurs fois lors de la lecture du fichier, occasionnant ainsi un délai de lecture plus long. Lorsque notre système de fichiers comporte des milliers de fichiers fragmentés, ce délai se fait de plus en plus long et peut ralentir le système d'exploitation.

L'outil de défragmentation permettra de rassembler les parties de fichier en un seul bloc permettant ainsi une lecture beaucoup plus rapide de la part du disque dur. Cet outil est au même endroit que le nettoyeur de disque et n'est pas utilisé sur un SSD ou sur un M.2, car le temps d'accès pour un bloc est le même pour l'ensemble du SSD alors que le positionnement sur un disque dur rotatif est très lent par rapport à la lecture de blocs successifs.

Chiffrement de disque (BitLocker)​

Le chiffrement de lecteur BitLocker est une fonctionnalité de protection des données intégrée au système d'exploitation, qui s'attaque aux menaces que constituent le vol ou l'exposition de données provenant des ordinateurs perdus, volés ou mis hors service de façon inappropriée.

La protection assurée par BitLocker est optimale lorsque ce dernier est utilisé avec un module de plateforme sécurisée (TPM) version 1.2 ou ultérieure. Le module TPM est un composant matériel installé sur de nombreux ordinateurs récents par les fabricants d'ordinateurs à même le processeur. Il fonctionne avec BitLocker pour protéger les données utilisateur et s'assurer que l'ordinateur n'a pas été falsifié pendant que le système était hors connexion.

Les données stockées sur un ordinateur perdu ou volé sont vulnérables aux accès non autorisés via l'exécution d'un outil d'attaque logicielle contre elles ou le transfert du disque dur de l'ordinateur sur un autre ordinateur. BitLocker contribue à limiter l'accès aux données non autorisées en renforçant la protection des fichiers et du système. BitLocker permet également de rendre les données inaccessibles lorsque les ordinateurs protégés par BitLocker sont mis hors service ou recyclés.

Gestionnaire de périphériques​

C'est un centre de contrôle pour tout le matériel de l'ordinateur, il permet entre autres de modifier les drivers pour le matériel qui est en cours d'utilisation par l'ordinateur. Il peut être utilisé pour diagnostiquer des problèmes ou pour voir le matériel détecté de l'ordinateur.

États possibles :

IcôneTitre
un périphérique de votre ordinateur ne fonctionne pas correctement (que les pilotes n'ont pas été correctement chargés), il est recommandé de rechercher dans les détails des pilotes afin de résoudre le problème.
périphérique désactivé
le mode de gestion automatique du périphérique a été désactivé
indique qu'un driver n'a pas été trouvé pour ce périphérique et qu'un compatible a été installé.

Gestionnaire de disque​

Permet de prendre contrôle de votre disque, vous pouvez ainsi voir votre nombre de partitions et effectuer des opérations de base sur ces dernières. Il s'agit d'une interface limitée mais qui vous permet de faire des opérations de base telles que formater une clé USB en deux partitions et ainsi de suite.

Son équivalent en ligne de commande, beaucoup plus complet, est diskpart — vu au cours 4.

MSConfig​

Msconfig, aussi connu sous le sobriquet System Configuration Utility, est un utilitaire Microsoft introduit avec Windows 98 et disponible avec toutes les versions subséquentes de Windows. Il est utilisé afin de configurer le choix de l'OS et les options par défaut si vous avez installé plusieurs versions de MS Windows, de déterminer les programmes et logiciels devant être exécutés au démarrage de Windows.

Vous devez être administrateur pour pouvoir exécuter cette commande.

Planificateur de tâches​

Le Planificateur de tâches (Task Scheduler, taskschd.msc) permet d'exécuter un programme ou un script automatiquement, selon un horaire (à une heure précise, au démarrage, à l'ouverture de session, etc.). C'est ce qui rend un script batch réellement utile en production : plutôt que de le lancer manuellement à chaque fois, on le laisse s'exécuter seul.

Son équivalent en ligne de commande est schtasks :

REM Créer une tâche qui exécute un script chaque jour à 2h du matin
schtasks /create /tn "SauvegardeQuotidienne" /tr "C:\Scripts\backup.bat" /sc daily /st 02:00

REM Voir l'état d'une tâche planifiée
schtasks /query /tn "SauvegardeQuotidienne"

REM Exécuter la tâche immédiatement (pour tester sans attendre l'horaire)
schtasks /run /tn "SauvegardeQuotidienne"

REM Supprimer la tâche
schtasks /delete /tn "SauvegardeQuotidienne" /f

Le script de l'exemple complet plus bas est exactement le genre de script qu'on planifierait de cette façon.

Observateur d'événements​

L'Observateur d'événements (Event Viewer, eventvwr.msc) permet de consulter les journaux (logs) que Windows et les applications tiennent automatiquement. C'est le premier réflexe pour diagnostiquer pourquoi un script planifié a échoué, ou pourquoi Windows a redémarré de façon inattendue.

Les journaux principaux :

JournalContenu
ApplicationÉvénements générés par les logiciels installés
SécuritéConnexions, tentatives d'accès, audits
SystèmeÉvénements du système d'exploitation lui-même (pilotes, services, démarrage)

Chaque événement a un niveau : Information, Avertissement ou Erreur (parfois Critique).

On peut aussi consulter les journaux en ligne de commande avec wevtutil, ce qui permet par exemple à un script de vérifier lui-même si une erreur récente est survenue :

REM Afficher les 5 derniers événements du journal Système
wevtutil qe System /c:5 /rd:true /f:text

Utiliser l'IA pour écrire un script​

Maintenant que vous connaissez les commandes de base, vous êtes en mesure de demander à une IA (Copilot, ChatGPT, etc.) de générer un script batch complet pour vous — et surtout de valider ce qu'elle vous propose avant de l'exécuter.

Utilisation éthique de l'IA​

  • Comprendre avant d'exécuter. Un script batch peut modifier le registre, supprimer des fichiers, créer des tâches planifiées ou changer des permissions. Ne jamais exécuter un script généré par l'IA que vous ne comprenez pas ligne par ligne — une seule commande mal comprise peut rendre un système instable.
  • Respecter les consignes du cours. Utiliser l'IA pour écrire un script est permis dans ce cours, mais vous devez être capable d'expliquer et de justifier chaque ligne du résultat remis ; présenter comme le vôtre un travail que vous ne comprenez pas n'est pas une utilisation acceptable de l'outil.
  • Protéger l'information sensible. Ne jamais coller un vrai mot de passe, une clé d'API, un nom de serveur de production ou une donnée personnelle dans un prompt — ce texte peut être conservé par le service utilisé.
  • Vérifier, ne pas présumer. L'IA peut inventer une commande, une option ou un chemin qui n'existe pas (une « hallucination »). Toujours tester dans un environnement sans conséquence (machine virtuelle, dossier de test) avant de déployer un script sur un système réel.
  • Garder l'esprit critique. L'IA propose une solution parmi plusieurs possibles, pas nécessairement la meilleure ni la plus sécuritaire pour votre contexte.

Rédiger un prompt efficace​

Un bon prompt pour générer un script contient généralement :

  1. Le contexte : le système visé (ex. Windows 10/11), les commandes ou contraintes déjà vues en classe.
  2. L'objectif précis : ce que le script doit accomplir, dans le détail (pas seulement « fait une sauvegarde », mais quoi copier, depuis où, vers où).
  3. Les contraintes : ce qui doit ou ne doit pas être utilisé (ex. « sans GOTO ni CALL », « doit gérer les erreurs avec ERRORLEVEL », « doit fonctionner même si le dossier de destination n'existe pas encore »).
  4. Le format attendu : un script commenté, un fichier .bat exécutable tel quel, une explication ligne par ligne, etc.

Un prompt vague (« écris-moi un script de sauvegarde ») produit un résultat générique qu'il faut ensuite corriger à la pièce. Un prompt précis, qui reprend le vocabulaire et les contraintes du cours, produit un script plus proche de ce qui est réellement attendu — et plus facile à valider ligne par ligne.

Exemples de prompts​

Voici quatre exemples de prompts qui appliquent la structure ci-dessus. Chacun peut servir de point de départ, à adapter et à tester (puis à corriger) avant de le considérer comme fiable.

1. Sauvegarde avec journalisation

« Écris un script batch (.bat) pour Windows 10 qui copie tous les fichiers de C:\Documents vers D:\Sauvegarde, en conservant la structure des sous-dossiers. Le script doit créer le dossier de destination s'il n'existe pas, écrire un fichier backup.log avec l'heure de début et de fin, et vérifier avec ERRORLEVEL si la copie a réussi. Utilise SETLOCAL pour ne pas modifier l'environnement global, et commente chaque section avec REM. »

2. Nettoyage de fichiers temporaires

« Écris un script batch qui supprime, dans %TEMP% et dans C:\Windows\Temp, les fichiers de plus de 30 jours, avec FORFILES. Le script doit demander une confirmation avant de supprimer (sauf si le paramètre /silent est passé), afficher le nombre de fichiers supprimés, et ne jamais s'arrêter même si un fichier est verrouillé ou inaccessible. »

3. Menu contextuel pour définir un fond d'écran

« Je veux ajouter une entrée "Définir comme fond d'écran" au clic droit sur les fichiers .jpg et .png dans l'explorateur Windows. Écris-moi : (1) un script batch avec des commandes REG ADD qui ajoute cette entrée sous HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell, et qui appelle un second script en lui passant le chemin de l'image cliquée (%1) ; (2) ce second script, qui écrit le chemin de l'image dans la clé HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper puis applique le changement immédiatement avec RUNDLL32. Explique-moi le rôle de chaque clé de registre utilisée. »

4. Tâche planifiée

« Écris un script batch qui utilise SCHTASKS pour créer une tâche planifiée exécutant C:\Scripts\backup.bat tous les jours à 2h du matin. Le script doit d'abord vérifier avec SCHTASKS /Query si la tâche existe déjà, et avertir l'utilisateur plutôt que d'écraser la tâche silencieusement. »

Le troisième exemple est un bon cas d'étude : il combine trois notions du cours (menu contextuel via le registre, clé de registre du fond d'écran, actualisation avec RUNDLL32) dans un seul script utile. C'est justement le genre de résultat qu'il faut valider ligne par ligne — en particulier, une entrée de menu contextuel mal formée dans HKEY_CLASSES_ROOT peut s'appliquer à tous les utilisateurs du poste et rester après une exécution ratée, d'où l'intérêt d'exporter la clé avant de tester.

Exercice en classe​

En groupe, nous allons rédiger ensemble un prompt pour demander à une IA de générer un script inspiré de l'exemple de sauvegarde plus bas, puis valider et corriger ce qu'elle propose à l'aide des commandes vues dans ce cours.

Bonnes pratiques​

  1. Toujours commencer par : @ECHO OFF
  2. Utiliser SETLOCAL pour isoler les variables : SETLOCAL
  3. Gérer les espaces dans les noms de fichiers : utiliser des guillemets
  4. Commenter le code avec REM ou ::
  5. Tester les conditions d'erreur avec ERRORLEVEL
  6. Utiliser PAUSE en fin de script pour voir les résultats

Exemple complet​

@ECHO OFF
SETLOCAL
REM Script de sauvegarde simple

SET SOURCE=C:\Documents
SET DEST=D:\Sauvegarde
SET LOGFILE=backup.log

ECHO Début de la sauvegarde le %DATE% à %TIME% > %LOGFILE%

IF NOT EXIST "%DEST%" (
ECHO Création du répertoire de destination...
MKDIR "%DEST%"
)

XCOPY "%SOURCE%\*.*" "%DEST%\" /S /Y >> %LOGFILE% 2>&1

IF ERRORLEVEL 1 (
ECHO Erreur lors de la sauvegarde >> %LOGFILE%
) ELSE (
ECHO Sauvegarde terminée avec succès >> %LOGFILE%
)

ECHO Fin de la sauvegarde le %DATE% à %TIME% >> %LOGFILE%
PAUSE

Ce script pourrait maintenant être planifié pour s'exécuter chaque nuit avec schtasks (vu plus haut), plutôt que d'être lancé manuellement à chaque fois — et en cas d'échec, l'Observateur d'événements est le premier endroit où aller vérifier ce qui s'est passé.