Passer au contenu principal
OS, Windows

Wildcards sous Windows CMD : maîtriser * et ? sans supprimer la moitié du disque

Les caractères génériques, ou wildcards, permettent de sélectionner plusieurs fichiers ou répertoires à partir d’un seul motif.

Sous l’invite de commandes Windows, les deux caractères les plus importants sont :

*
?

Ils paraissent simples. Ils le sont presque.

Le « presque » est important, car Windows conserve plusieurs comportements hérités de DOS et des noms courts 8.3 qui peuvent produire des résultats moins intuitifs qu’un simple cours de théorie ne le laisse penser.

Avant d’utiliser un wildcard avec DEL, vérifiez le même motif avec DIR. Voir trois fichiers de trop est agaçant. Les supprimer est une expérience pédagogique beaucoup plus durable.

DOS ou Windows CMD ?

On parle encore souvent de :

commandes DOS

pour désigner des commandes comme :

DIR
COPY
DEL
MOVE
XCOPY

Ces commandes possèdent effectivement un héritage historique venant de DOS.

Mais sur Windows 10, Windows 11 ou Windows Server moderne, elles sont exécutées dans :

cmd.exe
Windows Command Prompt

Windows moderne n’est donc pas « DOS avec une interface graphique ».

Dans cet article, nous parlerons surtout des wildcards de CMD, tout en gardant à l’esprit leur héritage DOS.

Les deux caractères génériques principaux

L’astérisque : *

L’astérisque correspond à une séquence de caractères de longueur variable.

Exemples classiques :

*.txt
log*
rapport*.pdf

Le motif :

log*

peut par exemple sélectionner :

log
log.txt
log1.txt
logs
log_2026_08_23.csv

L’astérisque peut donc représenter :

aucun caractère
un caractère
plusieurs caractères

Le point d’interrogation : ?

On apprend généralement que :

?

remplace un caractère.

C’est une bonne approximation, mais les règles de correspondance historiques de Windows sont plus subtiles.

Par exemple :

DIR read???.txt

peut correspondre notamment à :

Read.txt
Read1.txt
Read12.txt
Read123.txt
Readme1.txt

mais pas à un nom dépassant le nombre de caractères permis par le motif.

Il est donc plus prudent de retenir :

Dans les motifs de fichiers CMD, ? limite la position à un caractère, mais les règles historiques DOS/Windows peuvent autoriser moins de caractères en fin de composante.

Tester les motifs avec DIR

DIR est l’outil idéal pour expérimenter sans détruire quoi que ce soit.

Tout afficher

DIR *

ou, historiquement :

DIR *.*

Tous les fichiers TXT

DIR *.txt

Noms commençant par log

DIR log*

Noms commençant par rapport

DIR rapport*.pdf

Motif avec caractères variables

DIR f???.txt

Ce motif recherche des noms commençant par :

f

suivis d’un nombre limité de caractères avant :

.txt

*.* ne signifie pas « uniquement les fichiers avec extension »

C’est l’un des pièges historiques les plus connus.

On pourrait logiquement imaginer :

*.*

comme :

n'importe quel nom
+
un point
+
n'importe quelle extension

Mais sous les règles Windows/DOS traditionnelles, :

*.*

est utilisé comme un motif correspondant en pratique à :

tout

Il ne faut donc pas compter sur ce motif pour exclure les fichiers sans extension.

* suffit souvent

Sous CMD moderne :

DIR *

est généralement plus clair lorsque l’intention est simplement :

tout afficher

Le très ancien réflexe :

*.*

reste néanmoins omniprésent dans les scripts et documentations Windows.

Les wildcards peuvent sélectionner des répertoires

Avec DIR, les motifs ne concernent pas uniquement les fichiers.

Par exemple :

DIR projet*

peut afficher des fichiers mais également des répertoires dont le nom correspond.

Pour demander uniquement les répertoires :

DIR /A:D projet*

Pour demander uniquement les fichiers :

DIR /A:-D projet*

Afficher les fichiers cachés

Par défaut, certains attributs peuvent influencer ce que vous voyez.

Pour afficher tous les éléments, y compris cachés et système :

DIR /A

Avec un motif :

DIR /A *.log

C’est utile avant une opération destructive : un fichier invisible dans une liste incomplète reste parfaitement supprimable.

Utiliser DEL avec des wildcards

DEL accepte * et ?.

Supprimer tous les fichiers .bak

DEL *.bak

Supprimer les fichiers dont le nom commence par test

DEL test*

Motif plus précis

DEL rapport_2026_??.bak

La règle d’or avec DEL

Avant :

DEL *.bak

faites :

DIR *.bak

Avant :

DEL test*

faites :

DIR test*

Cette habitude coûte quelques secondes et peut sauver plusieurs heures de restauration.

DEL *.* mérite une attention particulière

Cette commande :

DEL *.*

demande la suppression de tous les fichiers correspondant dans le répertoire courant.

CMD affiche normalement une confirmation dans ce cas.

Mais la présence d’une confirmation ne doit jamais devenir votre stratégie de sauvegarde.

DEL ne supprime pas normalement les sous-répertoires eux-mêmes

Pour supprimer une arborescence, on utilise plutôt :

RMDIR /S dossier

ou :

RD /S dossier

C’est une opération différente de :

DEL

qui cible les fichiers.

Attention cependant : fournir un nom de dossier à DEL peut conduire la commande à viser les fichiers contenus dans celui-ci. Il faut donc rester extrêmement prudent avec les chemins ambigus.

Les noms courts 8.3 : le fantôme de DOS

Windows peut conserver, selon le volume et sa configuration, un nom court compatible avec l’ancien format :

8 caractères
+
3 caractères d'extension

Par exemple, un fichier nommé :

Rapport financier annuel.txt

pourrait posséder un nom court ressemblant à :

RAPPOR~1.TXT

Voir les noms courts

DIR possède l’option :

/X

Exemple :

DIR /X

Lorsqu’un nom court existe, il apparaît à côté du nom long.

Pourquoi cela compte pour les wildcards ?

Parce qu’un motif peut parfois correspondre :

au nom long
OU
au nom court 8.3

Vous pouvez donc obtenir un fichier qui semble ne pas correspondre visuellement au motif saisi.

Par exemple, un wildcard ressemblant à :

DIR T97*

peut trouver un fichier dont le nom long ne commence pas explicitement par :

T97

mais dont le nom court le fait.

Pourquoi ce comportement est dangereux avec DEL

Si :

DIR motif*

affiche deux fichiers alors que vous n’en attendiez qu’un, :

DEL motif*

risque naturellement de viser les deux.

Avec les wildcards Windows, ne raisonnez jamais uniquement à partir de ce que le nom long semble montrer. Vérifiez la sélection réelle.

Copier plusieurs fichiers avec COPY

COPY accepte lui aussi des motifs.

Copier les TXT

COPY *.txt D:\Sauvegarde\

Copier les PDF commençant par facture

COPY facture*.pdf D:\Comptabilite\

Copier les fichiers d’un dossier

COPY C:\Source\* D:\Destination\

COPY est conçu principalement pour les fichiers.

Il ne copie pas récursivement toute une arborescence de répertoires comme le ferait un outil spécialisé.

Attention à une particularité de COPY

COPY sait également concaténer plusieurs fichiers.

Par exemple :

COPY *.txt resultat.txt

peut être interprété comme une demande de combinaison de plusieurs fichiers dans une destination unique selon la syntaxe utilisée.

Pour les opérations complexes sur des arborescences, utilisez plutôt :

XCOPY
ou
ROBOCOPY

XCOPY et les wildcards

XCOPY peut copier des fichiers et des sous-répertoires.

Par exemple :

XCOPY C:\Projets\*.txt D:\Backup\ /S

L’option :

/S

copie les sous-répertoires contenant des fichiers correspondants, mais ignore les répertoires vides.

Pour inclure également les dossiers vides :

XCOPY C:\Projets\*.txt D:\Backup\ /S /E

XCOPY reste utile, mais Robocopy est souvent préférable

Pour une copie moderne d’arborescence, Microsoft fournit aussi :

ROBOCOPY

Exemple :

ROBOCOPY C:\Source D:\Backup *.txt /S

Robocopy apporte notamment :

  • reprise ;
  • journalisation ;
  • filtres ;
  • gestion plus avancée des métadonnées ;
  • copie multithread ;
  • modes de synchronisation.

Déplacer avec MOVE

MOVE accepte les wildcards pour déplacer plusieurs fichiers.

Déplacer tous les PDF

MOVE *.pdf C:\Archives\

Déplacer certains journaux

MOVE log_2026*.txt C:\Archives\Logs\

Comme toujours, vérifiez d’abord :

DIR log_2026*.txt

Les espaces dans les chemins

Un chemin comme :

C:\Mes Documents\

doit généralement être entouré de guillemets :

DIR "C:\Mes Documents\*.txt"

Pour copier :

COPY "*.txt" "D:\Mes Sauvegardes\"

Ou :

MOVE "rapport*.pdf" "C:\Archives PDF\"

Le wildcard reste à l’intérieur des guillemets

Cette syntaxe est parfaitement normale :

"C:\Logs\*.txt"

Les guillemets protègent surtout :

  • les espaces ;
  • certains caractères particuliers du shell.

Ils ne transforment pas automatiquement l’astérisque en caractère littéral.

Les wildcards dans FOR

Ils deviennent particulièrement utiles dans les scripts batch.

Dans une commande interactive :

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

Dans un fichier .bat ou .cmd, il faut doubler le pourcentage :

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

Traiter plusieurs extensions

FOR %%F IN (*.txt *.log *.csv) DO ECHO %%F

Chaque fichier correspondant est traité successivement.

Exemple de sauvegarde

@ECHO OFF
REM Copier tous les fichiers .txt
FOR %%F IN (*.txt) DO COPY "%%F" "D:\Backup\"

Le :

REM

est important.

# n’est pas un commentaire CMD

Cette notation :

# Copier les fichiers

est familière sous :

  • Bash ;
  • Python ;
  • de nombreux fichiers de configuration.

Mais ce n’est pas la syntaxe de commentaire d’un script CMD.

Utilisez :

REM Copier les fichiers

Par exemple :

@ECHO OFF

REM Afficher les fichiers .bak
DIR *.bak

REM Les supprimer après validation
DEL *.bak

Les wildcards ne sont pas des expressions régulières

Le motif :

*.txt

n’est pas une expression régulière.

Les wildcards offrent essentiellement une sélection simple basée sur :

*
?

Une expression régulière possède une syntaxe et une puissance différentes.

Par exemple, rechercher précisément :

rapport suivi de exactement 4 chiffres

dépasse rapidement ce qu’il est agréable de faire uniquement avec les wildcards CMD.

CMD et PowerShell n’utilisent pas exactement les mêmes règles

PowerShell possède lui aussi des wildcards :

*
?

mais il ajoute notamment des constructions comme :

[abc]

et possède sa propre logique de correspondance.

Par exemple :

Get-ChildItem *.txt

est une commande PowerShell, tandis que :

DIR *.txt

est la commande historique CMD.

Dans PowerShell, dir existe aussi comme alias de :

Get-ChildItem

Ce qui signifie que deux consoles affichant :

dir *.txt

peuvent en réalité utiliser des moteurs différents.

Identifier le shell avant de diagnostiquer

Avant de copier une commande trouvée dans une documentation, demandez-vous si elle est destinée à :

CMD
PowerShell
Bash
WSL

Le prompt peut donner un indice.

CMD ressemble souvent à :

C:\Users\Alice>

PowerShell :

PS C:\Users\Alice>

Bash :

alice@machine:~$

Les pièges les plus fréquents

Penser que ? correspond toujours exactement à un caractère

Dans les règles de fichiers historiques de Windows, notamment avec DIR, le comportement peut être plus souple à la fin d’un composant de nom.

Testez donc le motif réel.

Penser que *.* signifie uniquement « fichiers avec extension »

Non.

Sous Windows, :

*.*

est historiquement assimilé à une sélection générale.

Oublier les noms courts 8.3

Un wildcard peut trouver un fichier à travers son nom court même si son nom long semble ne pas correspondre.

Pour vérifier :

DIR /X

Tester directement avec DEL

Mauvaise méthode :

DEL projet*.bak

Bonne méthode :

DIR projet*.bak
DEL projet*.bak

Utiliser # comme commentaire

Incorrect dans un batch CMD :

# Supprimer les backups

Correct :

REM Supprimer les backups

Confondre COPY et copie récursive

COPY travaille principalement sur les fichiers.

Pour une arborescence :

XCOPY
ROBOCOPY

sont plus adaptés.

Oublier les guillemets

Incorrect :

COPY *.txt C:\Mes Documents\

Correct :

COPY *.txt "C:\Mes Documents\"

Exemples pratiques avec DIR

Commande But
DIR * Afficher l’ensemble du contenu correspondant
DIR *.txt Rechercher les noms correspondant au motif TXT
DIR log* Noms commençant par log
DIR *2026* Noms contenant 2026
DIR rapport?.pdf Rapport avec une position variable supplémentaire selon la sémantique Windows
DIR /A:D projet* Répertoires commençant par projet
DIR /A:-D *.log Fichiers LOG, hors répertoires
DIR /X Afficher également les noms courts 8.3

Exemples pratiques avec DEL

Commande Effet
DEL *.tmp Supprimer les fichiers correspondant au motif TMP
DEL rapport*.bak Supprimer les sauvegardes commençant par rapport
DEL /P *.bak Demander confirmation pour chaque fichier
DEL /Q *.tmp Mode silencieux pour les suppressions avec wildcard

L’option :

/P

est particulièrement intéressante lorsqu’une sélection mérite une validation manuelle.

L’option :

/Q

fait exactement l’inverse.

Autrement dit, utilisez-la lorsque vous savez très précisément ce que vous faites, pas pour accélérer votre apprentissage des sauvegardes.

Une méthode sûre avant une opération en masse

Pour une sélection comme :

rapport_2026*.bak

procédez dans cet ordre :

REM 1. Vérifier la sélection
DIR rapport_2026*.bak

REM 2. Vérifier les noms courts si le résultat paraît étrange
DIR /X rapport_2026*.bak

REM 3. Supprimer avec confirmation si nécessaire
DEL /P rapport_2026*.bak

Wildcards utiles à retenir

Motif Signification générale
* Séquence de caractères de longueur variable
? Position de caractère variable, avec subtilités historiques Windows
*.txt Noms correspondant au motif d’extension TXT
log* Noms commençant par log
*log* Noms contenant log
rapport?.txt Rapport suivi d’une position variable avant .txt
*.* Motif historique Windows correspondant pratiquement à tout

Ce qu’il faut retenir

  • Sur Windows moderne, on parle surtout de CMD plutôt que de DOS.
  • * correspond à une séquence de caractères de longueur variable.
  • ? possède une sémantique plus subtile que « exactement un caractère » dans certains traitements historiques Windows.
  • *.* ne signifie pas uniquement « tous les fichiers ayant une extension ».
  • Les noms courts 8.3 peuvent provoquer des correspondances surprenantes.
  • DIR /X permet d’examiner les noms courts lorsqu’ils existent.
  • Avant un DEL avec wildcard, utilisez le même motif avec DIR.
  • COPY est adapté aux fichiers ; XCOPY et surtout ROBOCOPY sont plus adaptés aux arborescences complexes.
  • MOVE accepte également les motifs pour déplacer plusieurs fichiers.
  • Les chemins contenant des espaces doivent être correctement placés entre guillemets.
  • Dans un fichier batch CMD, le commentaire officiel utilise REM, pas #.
  • Les wildcards CMD ne sont ni les wildcards PowerShell ni des expressions régulières.

Conclusion : deux caractères, beaucoup de responsabilités

Les wildcards permettent de transformer :

DIR fichier1.txt
DIR fichier2.txt
DIR fichier3.txt
...

en :

DIR *.txt

et de transformer une longue série d’opérations répétitives en une seule commande.

Leur puissance vient précisément du fait qu’un petit motif peut concerner énormément de fichiers.

La bonne méthode est donc :

construire le motif
↓
le tester avec DIR
↓
vérifier le résultat
↓
seulement ensuite copier, déplacer ou supprimer

Un astérisque correctement placé fait gagner beaucoup de temps.

Un astérisque incorrectement placé peut également faire gagner beaucoup d’espace disque.

Windows ne juge pas l’intention.

Il développe le motif et poursuit sa journée.