Windows20 livrablesQuiz corrigé
Apprivoiser le terminal copy · xcopy · robocopy
Ranger et sauvegarder les dossiers de GSB en ligne de commande — sans la souris.
Par Josselyn C., prof de BTS SIO. Publié le , mis à jour le .
- On manipule
- l'invite de commandes Windows (cmd) + un pont PowerShell
- Durée
- ~5-6h — une journée bien remplie (Partie 1 : le terminal & toutes les commandes de base · Partie 2 : les scripts .bat) · Public : débutant absolu, aucun pré-requis
On travaille UNIQUEMENT dans un dossier bac à sable C:\gsb-atelier. Jamais dans C:\Windows ni dans les dossiers système.
Ce qu'on fait aujourd'hui
Tu es en stage chez GSB (Galaxy Swiss Bourdin, un labo pharma). Le service croule sous les dossiers : comptes-rendus des visiteurs médicaux, exports, modèles de courriers… tout est en vrac. Ta mission : ranger cette pagaille et en faire une sauvegarde propre — mais sans toucher la souris, uniquement au clavier, dans le terminal.
Pourquoi sans la souris ? Parce qu'un informaticien qui sait taper 3 commandes fait en 10 secondes ce qui prend 5 minutes à la souris — et surtout, ces commandes sont reproductibles et automatisables (on peut les mettre dans un script qui tourne tout seul chaque soir). C'est exactement ce que tu feras plus tard en production.
Mode d'emploi — tu avances SEUL
Les notions de la Partie 1 — le terminal
| Notion | La commande | À quoi ça sert |
|---|---|---|
| Ouvrir le terminal | cmd | Donner des ordres écrits à Windows |
| Savoir où on est | cd | Afficher le dossier courant (le « tu es ici ») |
| Lister le contenu | dir | Voir les fichiers et dossiers présents |
| Se déplacer | cd nom / cd .. | Entrer dans un dossier / remonter |
| Créer un dossier | mkdir | Fabriquer l'arborescence de travail |
| Copier un fichier | copy | Dupliquer un fichier seul |
| Copier une arborescence | xcopy | Dupliquer un dossier avec ses sous-dossiers |
| Sauvegarder « pro » | robocopy / Copy-Item | Cloner un dossier de façon robuste (cmd) et son équivalent PowerShell |
Le vocabulaire de départ
| Mot | Ça veut dire quoi |
|---|---|
| Terminal / invite de commandes | Une fenêtre noire où tu tapes des ordres écrits au lieu de cliquer. Sous Windows, ça s'appelle cmd. |
| Invite (prompt) | Le petit texte au début de la ligne, ex. C:\gsb-atelier>. Il te dit où tu es et attend ta commande après le >. |
| Dossier / répertoire | Le même objet (un « tiroir » qui contient des fichiers). « Répertoire » est le mot technique. |
| Chemin (path) | L'adresse d'un fichier ou dossier, ex. C:\gsb-atelier\exports. Les niveaux sont séparés par un anti-slash \. |
| Arborescence | Un dossier et tout ce qu'il contient (sous-dossiers compris), comme les branches d'un arbre. |
0. C'est quoi le terminal, et comment l'ouvrir
Le terminal, c'est comme envoyer des SMS à ton ordinateur : tu écris un ordre court, tu appuies sur Entrée, il l'exécute et te répond. Pas de menus, pas de boutons — juste du texte. C'est déroutant 5 minutes, puis ça devient une superpuissance. On part de ce que tu connais déjà — l'explorateur de fichiers — puis on bascule au terminal, qui fait exactement la même chose en texte.
Étape 1 — Ouvre l'explorateur de fichiers
Appuie sur Windows + E (E comme Explorer). La fenêtre de l'explorateur s'ouvre : c'est la vue « souris » de tes dossiers, celle que tu utilises tous les jours.
Un raccourci qui sert tout le temps : Ctrl + E place le curseur dans la barre d'adresse/recherche de l'explorateur. Tu peux alors taper un chemin (ex. C:\Windows) puis Entrée pour y sauter directement — comme un cd, mais à la souris.
Étape 2 — Ouvre le terminal (l'invite de commandes)
Appuie sur Windows + R (la touche Windows et R en même temps). Une petite fenêtre « Exécuter » s'ouvre. Tape :
cmd
Tu vois quelque chose comme ça (le début change selon ton nom d'utilisateur) :
Microsoft Windows [version 10.0.19045.4529]
(c) Microsoft Corporation. Tous droits réservés.
C:\Users\eleve>_
Étape 3 — Le pont explorateur ↔ terminal (dans les deux sens)
Les deux mondes communiquent. Depuis le terminal, ouvre l'explorateur à l'endroit où tu es :
start .
Et dans l'autre sens : dans l'explorateur, Ctrl+E, copie le chemin affiché, puis dans le terminal tape cd et colle-le (clic droit) — tu sautes exactement au même endroit. La souris et le clavier montrent le même lieu.
1. Se repérer : où suis-je, et qu'y a-t-il ?
Avant de copier quoi que ce soit, il faut savoir où on est et ce qu'il y a autour. Deux commandes suffisent : une pour l'adresse, une pour le contenu.
Étape 1 — Afficher le dossier courant : cd
Tape simplement :
cd
C:\Users\eleve
Étape 2 — Lister le contenu : dir
dir
Le volume dans le lecteur C n'a pas de nom.
Répertoire de C:\Users\eleve
01/09/2026 09:12 <DIR> Documents
01/09/2026 09:12 <DIR> Downloads
01/09/2026 08:40 1 024 notes.txt
1 fichier(s) 1 024 octets
2 Rép(s) 53 218 611 200 octets libres
FLAG-A1
Où es-tu ?
Tape cd puis Entrée. Recopie le chemin exact affiché.
Rends : FLAG-A1- suivi de ce chemin (ex. FLAG-A1-C:\Users\eleve).
Étape 3 — Se déplacer : cd nom et cd ..
Pour entrer dans un dossier, mets son nom après cd :
cd Documents
Pour remonter au dossier parent :
cd ..
Chapitre 1 bis — Le tour complet des commandes de base
Avant de construire, on fait le tour de la boîte à outils du terminal. Tu connais déjà cd et dir ; voici tout le reste pour vraiment te balader et inspecter n'importe quelle machine. On regroupe par famille. Tape chaque commande au fur et à mesure.
Naviguer partout
Changer de disque : cd /d
cd /d D:\
Aller-retour rapide : pushd / popd
pushd C:\Windows
popd
Explorer le contenu à fond
Les options de dir
| Commande | Affiche… |
|---|---|
dir | le contenu du dossier courant |
dir /a | TOUT, y compris les fichiers cachés et système |
dir /b | les noms bruts seulement (pratique pour des listes) |
dir /s | le contenu et tous les sous-dossiers (récursif) |
dir /o:d | trié par date (o:d) ; /o:s = par taille |
dir *.txt | seulement les fichiers qui matchent (joker) |
Voir l'arbre : tree
tree C:\Windows\Media /f
C:\WINDOWS\MEDIA
├───...
│ ├── chimes.wav
│ └── ding.wav
└───...
Lire et chercher dans les fichiers
Afficher un fichier : type et more
type C:\Windows\System32\drivers\etc\hosts
Chercher un texte : findstr (et le tuyau |)
ipconfig | findstr IPv4
Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.25
Où est ce programme ? where
where notepad
FLAG-A4
Compter avec un tuyau
Combien de programmes .exe dans le dossier système ? Tape :
dir C:\Windows\System32\*.exe /b | find /c ".exe"
find /c "texte" compte les lignes contenant le texte. Rends FLAG-A4- suivi du nombre affiché (il dépend de ta version de Windows — recopie le tien).
S'informer sur la machine et le réseau
| Commande | Ce qu'elle te dit |
|---|---|
cls | Efface l'écran (clear screen) |
ver | La version de Windows |
hostname | Le nom réseau de la machine |
whoami | Ton compte utilisateur (domaine\nom) |
ipconfig | Tes adresses réseau (IP, passerelle) |
ping 8.8.8.8 | Teste si le réseau/Internet répond |
tasklist | La liste des programmes en cours (comme le Gestionnaire des tâches, en texte) |
taskkill /IM nom.exe /F | Force l'arrêt d'un programme par son nom |
systeminfo | Fiche complète de la machine (RAM, OS, modèle…) |
Se faciliter la vie (confort)
↑ / ↓ | Rappelle les commandes précédentes/suivantes |
Tab | Complète automatiquement un nom de fichier/dossier (tape le début, Tab) |
F7 | Affiche l'historique des commandes dans un menu |
title Mon terminal | Change le titre de la fenêtre |
color 0A | Change les couleurs (fond/texte) ; color seul remet par défaut |
exit | Ferme le terminal |
La clé maîtresse : l'aide /?
Tu n'as pas à tout retenir. Chaque commande explique ses options avec /? :
copy /?
Le pont cmd ↔ PowerShell ↔ Linux
La même idée existe partout, sous des noms différents. Ce tableau te servira toute ta carrière :
| Faire… | cmd | PowerShell | Linux / macOS |
|---|---|---|---|
| Lister | dir | Get-ChildItem / ls | ls |
| Se déplacer | cd | cd | cd |
| Copier | copy / xcopy | Copy-Item / cp | cp (cp -r) |
| Déplacer | move | Move-Item / mv | mv |
| Supprimer | del / rmdir | Remove-Item / rm | rm (rm -r) |
| Afficher un fichier | type | Get-Content / cat | cat |
| Effacer l'écran | cls | Clear-Host / cls | clear |
FLAG-D3
Deviens autonome avec l'aide
Sans que je te le dise : avec dir /?, trouve l'option qui affiche les fichiers cachés.
Rends FLAG-D3- suivi de l'option (elle commence par /).
2. Créer l'arborescence de travail (mkdir)
On part de zéro : on va fabriquer notre chantier C:\gsb-atelier et ses trois tiroirs. La commande mkdir = make directory, « fabrique un dossier ».
Étape 1 — Se placer à la racine du disque C
cd \
Étape 2 — Créer le dossier chantier
mkdir gsb-atelier
Entre dedans, puis crée les trois sous-dossiers d'un coup :
cd gsb-atelier
mkdir comptes-rendus exports modeles
Étape 3 — Vérifier avec dir
dir
Répertoire de C:\gsb-atelier
01/09/2026 10:03 <DIR> comptes-rendus
01/09/2026 10:03 <DIR> exports
01/09/2026 10:03 <DIR> modeles
0 fichier(s) 0 octets
3 Rép(s) ...
Étape 4 — Fabriquer des fichiers de test (echo)
Pour avoir quelque chose à copier plus tard, créons quelques fichiers factices dans modeles :
echo Modele de courrier GSB > modeles\courrier.txt
echo Modele de note de frais > modeles\notes-frais.txt
echo Modele de compte-rendu > modeles\cr-visite.txt
dir modeles
Répertoire de C:\gsb-atelier\modeles
01/09/2026 10:07 26 courrier.txt
01/09/2026 10:07 25 notes-frais.txt
01/09/2026 10:07 24 cr-visite.txt
3 fichier(s) ...
FLAG-B1
Ton chantier est prêt
Recrée exactement cette arborescence (si ce n'est pas déjà fait), place-toi dans C:\gsb-atelier et tape dir.
Rends FLAG-B1- suivi du nombre de répertoires (Rép(s)) affiché sur la dernière ligne (indice : tu en as créé trois).
3. Copier un fichier (copy)
copy, c'est la photocopieuse : tu lui donnes un original et une destination, elle en fait un double. Syntaxe : copy <source> <destination>.
Étape 1 — Copier un modèle vers un autre dossier
Place-toi dans le chantier (cd \gsb-atelier) puis :
copy modeles\courrier.txt exports
1 fichier(s) copié(s).
Étape 2 — Copier en renommant au passage
copy modeles\courrier.txt exports\courrier-2026.txt
FLAG-A2
Combien de copies ?
D'un seul coup, copie tous les .txt de modeles vers exports : copy modeles\*.txt exports. Le * est un joker (« tous les fichiers finissant par .txt »).
Recopie le chiffre de la sortie. Rends : FLAG-A2- + ce nombre (ex. FLAG-A2-3).
Chapitre 3 bis — Déplacer, renommer, supprimer
Copier, tu sais. Il te manque trois gestes du quotidien : déplacer (move), renommer (ren) et supprimer (del). On les pratique dans le bac à sable, sur les fichiers de exports créés au chapitre 3.
Déplacer : move
move exports\courrier.txt comptes-rendus
Renommer : ren
ren comptes-rendus\courrier.txt courrier-officiel.txt
Supprimer : del (et rmdir pour les dossiers)
del exports\courrier-2026.txt
FLAG-B6
Range comme un pro
Dans exports : renomme notes-frais.txt en frais-2026.txt, puis vérifie avec dir exports.
Rends FLAG-B6- suivi du nouveau nom exact du fichier tel qu'il apparaît dans dir.
4. Copier une arborescence entière (xcopy)
Essaie copy modeles sauvegarde-modeles… ça ne copie que les fichiers du dossier, pas ses éventuels sous-dossiers, et c'est vite limité. Pour copier un dossier avec toute sa descendance, on utilise xcopy (le « copy étendu », eXtended copy).
Étape 1 — Copier tout le chantier ailleurs
Depuis C:\gsb-atelier, copions tout dans un nouveau dossier C:\gsb-copie :
xcopy . C:\gsb-copie /E /I
modeles\courrier.txt
modeles\notes-frais.txt
modeles\cr-visite.txt
exports\courrier.txt
exports\courrier-2026.txt
...
6 fichier(s) copié(s)
Les options xcopy à connaître
| Option | Effet | Quand s'en servir |
|---|---|---|
/E | Sous-dossiers inclus (même vides) | Presque toujours, pour une arbo complète |
/I | Crée la destination comme dossier | Quand la destination n'existe pas encore |
/Y | Écrase sans demander | Dans un script automatique |
/D | Copie seulement les fichiers plus récents | Sauvegarde incrémentale rapide |
/EXCLUDE:liste.txt | Ne copie pas ce qui est listé | Ignorer des temporaires (.tmp…) |
FLAG-C1
Répare la commande cassée
Un collègue a tapé ceci pour copier le chantier, mais ça plante :
xcopy . C:\gsb-livraison /E
- Explique en une phrase pourquoi ça coince (indice : compare avec l'étape 1). 2) Corrige la commande, lance-la, et rends
FLAG-C1-+ le nombre de fichiers copié(s) affiché à la fin.
5. La sauvegarde « pro » : robocopy
xcopy marche, mais Microsoft le considère comme dépassé. Son successeur officiel est robocopy (Robust File Copy) : il reprend si la copie est interrompue, va plus vite sur de gros volumes, écrit des journaux, et sait faire un miroir exact. C'est l'outil qu'on utilise pour de vraies sauvegardes.
Étape 1 — Cloner le chantier proprement
Depuis C:\gsb-atelier :
robocopy . C:\gsb-sauvegarde /E
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Total Copiés Ignorés
Rép : 4 4 0
Fichiers : 6 6 0
-------------------------------------------------------------------------------
Les options robocopy à connaître
| Option | Effet |
|---|---|
/E | Sous-dossiers inclus (même vides) |
/MIR | Miroir : la destination devient une copie EXACTE de la source… |
/LOG:sauve.txt | Écrit le rapport dans un fichier journal |
/XO | Ne recopie pas un fichier destination plus récent (eXclude Older) |
/NP | Pas d'affichage du % (sortie plus propre dans un log) |
FLAG-B2
Ta première vraie sauvegarde
Fais une sauvegarde journalisée du chantier :
robocopy . C:\gsb-sauvegarde /E /LOG:C:\gsb-atelier\rapport.txt
Ouvre le journal (type rapport.txt ou double-clic) et rends FLAG-B2- suivi du nombre de fichiers au Total indiqué dans le récapitulatif.
6. Le pont vers PowerShell (l'outil moderne)
cmd est le terminal historique. À côté vit PowerShell, plus récent et plus lisible, que tu croiseras partout en entreprise. Bonne nouvelle : les gestes sont les mêmes, seuls les mots changent. Voici le pont.
Étape 1 — Ouvrir PowerShell
Windows+R, puis tape :
powershell
Étape 2 — Les mêmes gestes, d'autres noms
| Ce que tu veux faire | cmd | PowerShell |
|---|---|---|
| Lister le contenu | dir | Get-ChildItem (alias dir et ls marchent aussi) |
| Se déplacer | cd modeles | cd modeles (identique) |
| Copier un fichier | copy a b | Copy-Item a b |
| Copier une arbo | xcopy a b /E /I | Copy-Item a b -Recurse |
Étape 3 — Copier le chantier en PowerShell
Place-toi dans le chantier (cd C:\gsb-atelier) puis :
Copy-Item . C:\gsb-copie-ps -Recurse
Vérifie :
Get-ChildItem C:\gsb-copie-ps
FLAG-D1
Investigation doc
Tu veux que Copy-Item écrase les fichiers déjà présents sans se plaindre. Cherche l'option qui fait ça (aide intégrée : tape Get-Help Copy-Item, ou cherche « Copy-Item overwrite » dans la doc Microsoft).
Rends FLAG-D1- suivi du nom exact de l'option (elle commence par un tiret).
Partie 2 — Automatiser : les scripts .bat
Jusqu'ici tu tapais tes commandes une par une. Mais une sauvegarde, tu vas la refaire tous les jours : ce serait bête de retaper les mêmes lignes à chaque fois. La solution : les mettre dans un fichier script (un .bat), et lancer tout d'un seul double-clic. C'est le premier pas vers l'automatisation — le cœur du métier.
Les notions de la Partie 2
| Notion | Le mot-clé | À quoi ça sert |
|---|---|---|
| Écrire & lancer un script | .bat, @echo off, pause | Enchaîner des commandes automatiquement |
| Mémoriser une valeur | set, %var% | Garder un texte ou un nombre pour le réutiliser |
| Poser une question | set /p | Lire ce que l'utilisateur tape |
| Décider | if, if exist, else | Faire quelque chose seulement si une condition est vraie |
| Répéter (utile) | for | Traiter chaque fichier d'un dossier |
| Répéter (sans fin) | goto | Comprendre la boucle infinie — et savoir l'arrêter |
| Arrêter / se défendre | Ctrl+C, taskkill | Reprendre le contrôle d'un script emballé |
7. Ton premier script .bat
Un script, c'est une recette de cuisine : une liste d'ordres écrits que l'ordinateur exécute dans l'ordre, du haut vers le bas, tout seul. On l'écrit dans un simple fichier texte, qu'on enregistre avec l'extension .bat.
Étape 1 — Créer le fichier avec le Bloc-notes
Ouvre le Bloc-notes (menu Démarrer → « Bloc-notes »). Tape exactement :
@echo off
echo Bonjour, ici le script GSB !
echo Je vais t'aider a sauvegarder.
pause
Étape 2 — Enregistrer en .bat (le piège classique)
Fichier → Enregistrer sous. Va dans C:\gsb-atelier. Point crucial : dans « Type », choisis « Tous les fichiers » (pas « Documents texte »), et nomme le fichier bonjour.bat.
Étape 3 — Le lancer
Deux façons : double-clic dans l'explorateur, ou depuis le terminal :
bonjour.bat
Bonjour, ici le script GSB !
Je vais t'aider a sauvegarder.
Appuyez sur une touche pour continuer...
FLAG-B3
Ton script d'accueil
Écris mon-premier.bat qui : (1) affiche ton prénom, (2) affiche la phrase « Atelier terminal — GSB », (3) fait une pause. Ajoute au moins un commentaire rem.
Rends FLAG-B3-OK quand il tourne, + colle le contenu de ton fichier sur ta feuille.
8. Les variables et les questions
Une variable, c'est une boîte étiquetée dans laquelle tu ranges une valeur (un texte, un nombre) pour la réutiliser plus loin. On la crée avec set, et on lit son contenu en entourant son nom de %.
Étape 1 — Créer et utiliser une variable
set entreprise=GSB
echo Bienvenue chez %entreprise% !
Étape 2 — Poser une question : set /p
set /p prenom=Comment tu t'appelles ?
echo Salut %prenom%, on y va !
Étape 3 — Calculer : set /a
set /p annee=Ton annee de naissance ?
set /a age=2026 - %annee%
echo Tu as environ %age% ans.
Les variables système déjà prêtes
| Variable | Contient |
|---|---|
%date% / %time% | La date / l'heure du moment |
%username% | Ton nom d'utilisateur Windows |
%cd% | Le dossier courant (current directory) |
%userprofile% | Ton dossier personnel (C:\Users\…) |
FLAG-A3
Calcul automatique
Écris un .bat qui range set /a total=12 * 8 + 4 puis l'affiche.
Lance-le et rends FLAG-A3- suivi du nombre affiché.
9. Décider : les conditions (if)
Un script utile ne fait pas toujours la même chose : il s'adapte. « Si le dossier de sauvegarde existe déjà, ne le recrée pas ; sinon, crée-le. » Ce « si… sinon » se dit if … else.
Étape 1 — Tester si un dossier existe
if exist C:\gsb-sauvegarde (
echo Le dossier de sauvegarde existe deja.
) else (
echo Je le cree.
mkdir C:\gsb-sauvegarde
)
Étape 2 — Comparer des valeurs
set /p choix=Tape 1 pour sauvegarder :
if "%choix%"=="1" (
echo On lance la sauvegarde.
) else (
echo Choix ignore.
)
FLAG-C2
Répare la condition
Ce bout de script plante. Trouve les deux erreurs, corrige-le, fais-le tourner :
set /p rep=Continuer ? (o/n)
if %rep%==o
(
echo On continue.
)
Indices : une histoire de guillemets, et une histoire de parenthèse mal placée. Rends FLAG-C2- + le mot affiché quand tu tapes « o ».
10. Répéter utilement : la boucle for
Traiter 1 fichier, tu sais. Mais 50 ? Tu ne vas pas taper 50 lignes. La boucle for dit : « pour chaque fichier de ce dossier, fais ceci ». Une ligne, tous les fichiers.
Étape 1 — Parcourir les fichiers d'un dossier
Dans un .bat, place-toi (par la pensée) dans modeles et écris :
for %%f in (C:\gsb-atelier\modeles\*.txt) do echo Trouve : %%f
Trouve : C:\gsb-atelier\modeles\courrier.txt
Trouve : C:\gsb-atelier\modeles\notes-frais.txt
Trouve : C:\gsb-atelier\modeles\cr-visite.txt
Étape 2 — Compter avec un compteur
set /a n=0
for %%f in (C:\gsb-atelier\modeles\*.txt) do set /a n=%n%+1
echo Il y a %n% fichiers .txt.
Étape 3 — Un compteur de 1 à 5
for /l %%i in (1,1,5) do echo Tour numero %%i
FLAG-B4
Compter les fichiers
Écris un .bat qui compte les fichiers .txt présents dans C:\gsb-atelier\modeles et affiche le total (reprends l'étape 2).
Rends FLAG-B4- suivi du nombre affiché.
11. La boucle infinie : la comprendre, l'arrêter, la reconnaître
Tu sais répéter un nombre connu de fois (for /l). Mais que se passe-t-il si on répète sans jamais s'arrêter ? C'est la boucle infinie. Bien utilisée, c'est utile (un menu qui revient sans cesse). Mal utilisée — ou cachée dans un fichier piégé — c'est une arme. On va comprendre les deux, et surtout garder le contrôle.
Étape 1 — Fabriquer une boucle avec goto
goto saute vers une étiquette (un nom précédé de :). Si l'étiquette est au-dessus du goto, ça recommence en boucle. Crée boucle.bat :
@echo off
:tour
echo Je tourne... (appuie sur Ctrl + C pour m'arreter)
goto tour
Étape 2 — SAVOIR L'ARRÊTER (le réflexe n°1)
Lance boucle.bat. Ça défile ? Reprends le contrôle :
Étape 3 — La bonne boucle : celle qui a une PORTE DE SORTIE
Une boucle infinie devient utile dès qu'on ajoute une condition pour en sortir. C'est le principe d'un menu :
:menu
set /p choix=Tape q pour quitter, autre chose pour recommencer :
if "%choix%"=="q" goto fin
echo Tu n'as pas quitte, je reviens au menu...
goto menu
:fin
echo A bientot !
Étape 4 — Volet cybersécurité : reconnaître une boucle malveillante
Certains fichiers .bat piégés cachent une boucle infinie qui relance des processus sans fin pour saturer la machine — c'est un déni de service local (souvent appelé fork bomb). Tu n'as pas à en fabriquer : tu dois savoir le reconnaître et t'en protéger.
FLAG-D2
Diagnostic de sécurité
Un camarade te montre ce .bat trouvé sur une clé USB (ne le tape pas, lis-le) :
@echo off
title Photos vacances
:x
start "" cmd
goto x
Réponds sur ta feuille : (1) quelle ligne crée la boucle infinie et pourquoi c'est dangereux ? (2) donne deux façons concrètes d'arrêter la machine si on l'exécutait par erreur.
Rends FLAG-D2- suivi du nom de l'instruction qui crée la boucle (un mot de 4 lettres).
12. Projet final : sauvegarde.bat interactif
On assemble tout : variables, questions, conditions, boucle-menu maîtrisée, robocopy et journal. Objectif : un vrai petit outil que GSB pourrait utiliser tous les jours.
Le script complet
Crée sauvegarde.bat dans C:\gsb-atelier et tape ceci (recopie tout, on l'explique juste après) :
@echo off
rem === Outil de sauvegarde GSB ===
set source=C:\gsb-atelier
set backup=C:\gsb-sauvegarde
set journal=C:\gsb-atelier\rapport.txt
:menu
cls
echo ==========================================
echo SAUVEGARDE GSB
echo ==========================================
echo 1. Lancer la sauvegarde
echo 2. Voir le dernier rapport
echo 3. Quitter
echo.
set /p choix=Ton choix (1/2/3) :
if "%choix%"=="1" goto sauver
if "%choix%"=="2" goto rapport
if "%choix%"=="3" goto fin
echo Choix invalide, reessaie.
pause
goto menu
:sauver
echo.
echo Sauvegarde de %source% vers %backup%...
robocopy %source% %backup% /E /NP /LOG:%journal%
echo Termine le %date% a %time%.
pause
goto menu
:rapport
echo.
if exist %journal% (
type %journal%
) else (
echo Aucun rapport pour l'instant : lance d'abord une sauvegarde.
)
pause
goto menu
:fin
echo A bientot !
Comment ça marche — les blocs clés
| Bloc | Ce qu'il fait |
|---|---|
set source=… / backup=… / journal=… | Range les 3 chemins dans des variables. Pour changer de dossier, tu modifies UNE ligne, pas tout le script. |
:menu … goto menu | La boucle-menu MAÎTRISÉE : elle revient au menu après chaque action, mais l'option 3 (goto fin) est la porte de sortie. |
cls | « Clear screen » : efface l'écran pour un menu propre à chaque tour. |
if "%choix%"=="1" goto sauver | Aiguille vers le bon bloc selon le choix tapé. |
robocopy … /E /NP /LOG:%journal% | La sauvegarde robuste vue en Partie 1, avec journal. |
if exist %journal% (…) else (…) | N'affiche le rapport que s'il existe déjà — sinon un message clair. |
FLAG-B5
Ton outil de sauvegarde
Fais tourner sauvegarde.bat de bout en bout : une sauvegarde réussie, puis l'affichage du rapport, puis la sortie propre par l'option 3.
Rends FLAG-B5-OK + colle ton script (ou une capture du menu) sur ta feuille.
Aide-mémoire — toutes les commandes de base
Ta antisèche à garder sous les yeux. (Rappel : commande /? donne l'aide détaillée de n'importe laquelle.)
Se repérer & naviguer
cd | où suis-je ? |
cd nom | entrer dans un dossier |
cd .. | remonter d'un cran |
cd \ | aller à la racine |
cd /d D:\ | changer de disque |
pushd / popd | saut aller / retour |
start . | ouvrir l'explorateur ici |
Explorer & lire
dir | lister |
dir /a /s /b | cachés / récursif / bruts |
tree /f | arborescence visuelle |
type / more | afficher un fichier |
findstr | chercher du texte |
where | localiser un programme |
| find /c | compter des lignes |
Manipuler des fichiers
mkdir | créer un dossier |
copy | copier un fichier |
xcopy /E /I | copier une arborescence |
robocopy /E | sauvegarde robuste |
move | déplacer |
ren | renommer |
del / rmdir /s | supprimer fichier / dossier |
Machine, confort & scripts
cls · ver · hostname | écran / version / nom |
whoami · ipconfig | qui / réseau |
tasklist / taskkill /F | voir / tuer un programme |
↑ · Tab · Ctrl+C | historique / compléter / stopper |
@echo off · pause | en-tête / attendre (.bat) |
set · set /p · set /a | variable / saisie / calcul |
if · for · goto | décider / répéter / boucler |
On fait le point
Récapitulatif — ce que tu sais faire maintenant
| Tu sais… | Avec |
|---|---|
| Ouvrir un terminal et lire l'invite | cmd, powershell |
| Savoir où tu es et ce qu'il y a | cd, dir |
| Ouvrir l'explorateur & faire le pont | Win+E, Ctrl+E, start . |
| Te déplacer partout | cd nom, cd .., cd \, cd /d, pushd/popd |
| Explorer & lire | dir /a /s /b, tree, type, findstr, where |
| Déplacer, renommer, supprimer | move, ren, del, rmdir |
| Inspecter la machine | ver, hostname, whoami, ipconfig, tasklist |
| Trouver de l'aide seul | commande /?, help |
| Créer des dossiers | mkdir |
| Copier un ou plusieurs fichiers | copy, joker *, /Y |
| Copier une arborescence complète | xcopy /E /I |
| Faire une sauvegarde robuste et journalisée | robocopy /E /LOG:, /MIR |
| Faire les mêmes gestes en PowerShell | Copy-Item -Recurse |
| Écrire et lancer un script | .bat, @echo off, echo, rem, pause |
| Mémoriser, demander, calculer | set, %var%, set /p, set /a |
| Décider et répéter | if / if exist / else, for, for /l |
| Maîtriser une boucle (et l'arrêter) | goto, porte de sortie, Ctrl+C, taskkill |
| Reconnaître une boucle malveillante et s'en défendre | lecture d'un .bat, extensions visibles, art. 323-1 |
| Assembler un outil complet | sauvegarde.bat (menu + robocopy + journal) |
Mini-quiz — vérifie-toi (corrigé juste dessous)
Exercice Réussi À revoir
- Quelle commande affiche le dossier où tu te trouves ?
- Pour copier un dossier et ses sous-dossiers avec xcopy, quelles deux options mets-tu le plus souvent ?
- robocopy affiche « a retourné 1 » en finissant. C'est une erreur ?
- En PowerShell, quel mot ajoute-t-on à
Copy-Itempour copier tout le contenu d'un dossier ? - Dans un
.bat, quelle ligne mets-tu en premier pour que les commandes ne s'affichent pas, et quelle commande fait attendre avant de fermer ? - Quelle est LA différence entre une boucle
gotomaîtrisée et une boucle infinie dangereuse ? - Tu reçois un
bonus.batinconnu par mail. Quel est le bon réflexe avant de double-cliquer ?
Voir le corrigéMasquer le corrigé de l'exercice
cd(tapé seul). — 2)/E(sous-dossiers) et/I(crée la destination comme dossier). — 3) Non :1= « des fichiers ont bien été copiés » ; l'erreur commence à8. — 4)-Recurse. — 5)@echo offen première ligne ;pausepour attendre. — 6) La porte de sortie : la boucle maîtrisée a une condition qui faitgoto fin; l'infinie n'en a aucune. — 7) Ne pas l'exécuter : l'ouvrir dans le Bloc-notes (clic droit → Modifier) pour le LIRE d'abord — et ne jamais lancer un .bat d'origine inconnue.
Tu avais trouvé ?
Checklist — « Tu es bloqué ? »
Glossaire
| cmd | L'invite de commandes Windows (le terminal historique). |
| PowerShell | Le terminal moderne de Windows, commandes en Verbe-Nom. |
| Invite / prompt | Le texte en début de ligne indiquant où tu es (C:\…>). |
| Chemin absolu | Adresse complète depuis la racine, ex. C:\gsb-atelier\exports. |
| Chemin relatif | Adresse depuis là où tu es, ex. modeles\courrier.txt. |
Joker * | « n'importe quoi », ex. *.txt = tous les fichiers .txt. |
Redirection > | Envoie la sortie d'une commande dans un fichier au lieu de l'écran. |
| Miroir (/MIR) | Rendre la destination identique à la source (copie ET supprime le surplus). |
| Code de sortie | Nombre renvoyé par une commande pour dire comment ça s'est passé (0 = ok…). |
Défis bonus — pour les rapides
Tu as fini avant les autres ? Ces défis vont plus loin. Aucune correction ici : tu cherches, tu testes, tu notes ta démarche.
Défi E1
Ta sauvegarde en 1 double-clic (script .bat)
Crée un fichier sauvegarde.bat dans C:\gsb-atelier contenant :
@echo off
robocopy C:\gsb-atelier C:\gsb-sauvegarde /E /NP
echo Sauvegarde terminee le %date% a %time%
pause
Double-clique dessus. Explique en 2 lignes ce que fait chaque commande (@echo off, %date%, pause). Livrable : le .bat qui marche + ton explication.
Défi E2
Le miroir qui nettoie
Dans C:\gsb-sauvegarde, crée à la main un fichier bidon vieux.txt (qui n'existe pas dans la source). Lance robocopy C:\gsb-atelier C:\gsb-sauvegarde /MIR. Que devient vieux.txt ? Livrable : ce que tu observes + une phrase sur le danger de /MIR si on inverse source et destination.
Défi E3
Sauvegarde datée (investigation)
On voudrait un dossier de sauvegarde nommé avec la date du jour, ex. gsb-2026-09-02. Cherche comment récupérer la date dans une variable .bat (indice : %date% et la commande set). Livrable : la ligne qui crée C:\gsb-JJ-MM automatiquement (même approximative — on discutera des pièges de format ensemble).
Défi E4
Enrichis ton menu
Ajoute à sauvegarde.bat une 4ᵉ option « Compter les fichiers du dossier de travail » qui réutilise la boucle for du chapitre 10 et affiche le total. Livrable : le nouveau bloc :compter + la ligne if "%choix%"=="4" goto compter.
Défi E5
Reprendre le contrôle (défense)
Lance ta boucle.bat (le compteur sans fin du chapitre 11) dans une fenêtre, puis, depuis une AUTRE fenêtre cmd, arrête-la en ligne de commande. Cherche la syntaxe de taskkill pour viser un processus par son nom. Livrable : la commande exacte que tu as utilisée + ce que tu observes.
Compétences mobilisées (référentiel BTS SIO)
| Bloc | Compétence | Ce qui est travaillé ici |
|---|---|---|
| Bloc 3 · Cybersécurité des services informatiques | C3.4 — Garantir la disponibilité, l'intégrité et la confidentialité des services informatiques et des données | → Recenser les conséquences d'une perte de DIC (pourquoi sauvegarder) → Organiser la collecte et la conservation des preuves numériques (sauvegarde journalisée robocopy /LOG, notion de miroir) |
| Bloc 3 · Cybersécurité des services informatiques | C3.3 — Sécuriser les équipements et les usages des utilisateurs | → Informer les utilisateurs sur les risques (reconnaître un .bat piégé / une boucle malveillante) → Identifier les menaces et mettre en œuvre les défenses (ne pas exécuter l'inconnu, extensions visibles, Gestionnaire des tâches) |
| Bloc 1 · Support et mise à disposition de services informatiques | C1.1 — Gérer le patrimoine informatique | → Maintenir à jour la documentation technique (organiser une arborescence de travail claire, la reproduire) |