Les environnements de ligne de commande tels que l'invite de commande Windows et PowerShell utilisent des espaces pour séparer les commandes et les arguments, mais les noms de fichiers et de dossiers peuvent également contenir des espaces. Pour spécifier un chemin de fichier avec un espace à l'intérieur, vous devez «échapper».
«S'échapper» d'un personnage change sa signification. Par exemple, échapper un espace amènera le shell à le traiter comme un caractère d'espace standard plutôt que comme un caractère spécial qui sépare les arguments de ligne de commande.
Par exemple, supposons que vous ayez un fichier texte dont vous souhaitez voir le contenu. Vous pouvez le faire avec la commande type. En supposant que le fichier texte est à C: Test File.txt
, la commande suivante dans l'invite de commande affichera son contenu:
tapez C: Test File.txt
Génial. Maintenant, que faire si vous avez le même fichier à C: Dossier de test Fichier de test.txt
? Si vous essayez d'exécuter la commande ci-dessous, cela ne fonctionnera pas. Ces espaces dans le chemin du fichier vous gênent.
tapez C: Test Folder Test File.txt
La ligne de commande pense que vous essayez de rechercher un fichier appelé C: Test
et dit qu'il "ne peut pas trouver le chemin spécifié."
Il existe trois façons différentes d'échapper aux chemins de fichiers sous Windows:
Nous allons vous montrer comment utiliser chaque méthode.
La manière standard de s'assurer que Windows traite correctement un chemin de fichier est de le mettre entre guillemets doubles (”). Par exemple, avec notre exemple de commande ci-dessus, nous allons simplement exécuter la commande suivante à la place:
tapez "C: Test Folder Test File.txt"
Vous pouvez en fait mettre des parties du chemin entre guillemets si vous préférez. Par exemple, supposons que vous ayez un fichier nommé File.txt dans ce dossier. Vous pouvez exécuter ce qui suit:
tapez C: "Dossier de test" File.txt
Cependant, ce n’est pas nécessaire. Dans la plupart des cas, vous pouvez simplement utiliser des guillemets tout autour du chemin.
Cette solution fonctionne à la fois dans l'environnement d'invite de commande (CMD) traditionnel et dans Windows PowerShell.
Dans l'invite de commandes, le caractère curseur (^) vous permettra d'échapper aux espaces – en théorie. Ajoutez-le simplement avant chaque espace dans le nom du fichier. (Vous trouverez ce caractère dans la ligne numérique de votre clavier. Pour saisir le caractère d'insertion, appuyez sur Maj + 6.)
Voici le problème: bien que cela devrait fonctionner, et cela fonctionne parfois, cela ne fonctionne pas tout le temps. La gestion de ce personnage par l’invite de commandes est étrange.
Par exemple, avec notre exemple de commande, vous exécuteriez la commande suivante et cela ne fonctionnerait pas:
tapez C: Test ^ Folder Test ^ File.txt
D'autre part, si nous essayons d'ouvrir notre fichier directement en tapant son chemin dans l'invite de commandes, nous pouvons voir que le caractère caret échappe correctement aux espaces:
C: Test ^ Dossier Test ^ Fichier.txt
Alors quand ça marche? Eh bien, d'après nos recherches, cela semble fonctionner avec certaines applications et pas avec d'autres. Votre kilométrage peut varier en fonction de la commande que vous utilisez. La gestion de ce personnage par l’invite de commandes est étrange. Essayez-le avec la commande que vous utilisez, si cela vous intéresse, cela peut fonctionner ou non.
Par souci de cohérence, nous vous recommandons de vous en tenir aux guillemets doubles dans l'invite de commande ou de basculer vers PowerShell et d'utiliser la méthode d'accent grave ci-dessous.
PowerShell utilise le caractère d'accent grave (`) comme caractère d'échappement. Ajoutez-le simplement avant chaque espace dans le nom du fichier. (Vous trouverez ce caractère au-dessus de la touche Tab et sous la touche Échap de votre clavier.)
tapez C: Test` Folder Test` File.txt
Chaque caractère d'accent grave indique à PowerShell d'échapper au caractère suivant.
Notez que cela ne fonctionne que dans l'environnement PowerShell. Vous devrez utiliser le caractère d'insertion dans l'invite de commande.
Si vous connaissez les systèmes d’exploitation de type UNIX tels que Linux et macOS, vous pouvez être habitué à utiliser la barre oblique () avant un espace pour y échapper. Windows l'utilise pour les chemins de fichiers normaux, donc cela ne fonctionne pas – les caractères caret (^) et accent grave (`) sont la version Windows de la barre oblique, selon le shell de ligne de commande que vous utilisez.