Les environnements de ligne de commande comme 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, doit “échapper”.
Ligne de commande 101: Pourquoi devez-vous échapper aux espaces
“Échapper” d'un personnage change de sens. Par exemple, échapper à un espace amènera le shell à le traiter comme un caractère d'espace standard plutôt qu'un caractère spécial qui sépare les arguments de la ligne de commande.
Par exemple, supposons que vous ayez un fichier texte dont vous voulez voir le contenu. Vous pouvez le faire avec la commande type. En supposant que le fichier texte est dans C:TestFile.txt
, la commande suivante à l'invite de commande affichera son contenu:
type C:FichierTest.txt
Excellent. Maintenant, Que faire si vous avez le même fichier dans C:Test FolderTest File.txt
? Si vous essayez d'exécuter la commande suivante, ça ne marchera pas: ces espaces dans le chemin du fichier gênent.
type C:Dossier de testFichier de test.txt
La ligne de commande pense que vous essayez de trouver un fichier appelé C:Test
et dit que “le chemin spécifié est introuvable”.
Trois alternatives pour échapper aux espaces dans Windows
Il existe trois façons différentes d'échapper aux chemins de fichiers dans Windows:
- Y compris le chemin (ou des parties de celui-ci) entre guillemets (").
- Ajout d'un curseur (^) avant chaque espace. (Cela ne fonctionne que dans l'invite de commande / CMD, et cela ne semble pas fonctionner avec toutes les commandes).
- Ajout d'un caractère d'accent grave (`) avant chaque espace. (Cela ne fonctionne que dans PowerShell, mais ça marche toujours).
Nous allons vous montrer comment utiliser chaque méthode.
Mettez le chemin entre guillemets (“)
Le moyen standard de s'assurer que Windows traite correctement un chemin de fichier est de le mettre entre guillemets. ("). Par exemple, avec notre exemple de commande ci-dessus, nous exécuterions simplement ce qui suit à la place:
taper "C:Dossier de testFichier de test.txt"
En réalité, vous pouvez mettre des parties du chemin entre guillemets si vous préférez. Par exemple, disons que vous avez un fichier appelé File.txt dans ce dossier. Vous pouvez exécuter ce qui suit:
type C:"Dossier de test"Fichier.txt
Malgré cela, Ce n'est pas nécessaire; dans la majorité des cas, vous pouvez utiliser des guillemets tout au long du chemin.
Cette solution fonctionne à la fois dans l'environnement d'invite de commande traditionnel (CMD) comme dans Windows PowerShell.
Parfois: utiliser le caractère Caret pour échapper aux espaces (^)
À l'invite de commande, le curseur (^) vous permettra d'échapper aux espaces, en théorie. Ajoutez-le juste avant chaque espace dans le nom de fichier. (Vous trouverez ce caractère dans la rangée de chiffres de votre clavier. Pour taper le caret, appuyez sur Maj + 6).
Voici le problème: bien que cela devrait fonctionner, et parfois c'est le cas, ça marche pas tout le temps. La gestion de l'invite de commande de ce personnage est étrange.
Par exemple, avec notre exemple de commande, Je lancerais ce qui suit et cela ne fonctionnerait pas:
type C:Test^ DossierTest^ Fichier.txt
D'autre part, si nous essayons d'ouvrir notre fichier directement en tapant son chemin à l'invite de commande, nous pouvons voir que le caret échappe correctement aux espaces:
C:Test^ DossierTest^ Fichier.txt
Ensuite, Quand ça marche? Bon, selon nos recherches, semble fonctionner avec certaines applications et pas d'autres. Votre kilométrage peut varier en fonction de la commande que vous utilisez. La gestion de l'invite de commande de ce personnage est étrange. Essayez-le avec la commande que vous utilisez, Si tu es intéressé, ça peut marcher ou pas.
Pour garder la cohérence, Nous vous suggérons de vous en tenir aux guillemets doubles à l'invite de commande, ou passez à PowerShell et utilisez la méthode d'accent grave ci-dessous.
PowerShell: utiliser le caractère accent grave (`)
PowerShell utilise le caractère accent grave (`) comme caractère d'échappement. Ajoutez-le juste avant chaque espace dans le nom de fichier. (Vous trouverez ce caractère au dessus de la touche Tab et en dessous de la touche Echap de votre clavier).
type C:Test`DossierTest`Fichier.txt
Chaque caractère d'accent grave dit à PowerShell d'échapper au caractère suivant.
Veuillez noter que cela ne fonctionne que dans l'environnement PowerShell. Vous devrez utiliser caret dans l'invite de commande.
Si vous êtes familier avec les systèmes d'exploitation de type UNIX tels que Linux et macOS, vous pouvez être habitué à utiliser le caractère barre oblique inverse () devant un espace pour s'évader. Windows l'utilise pour les chemins de fichiers normaux, donc ça ne marche pas; caractères accentués (^) et accent grave (`) sont la version Windows de la barre oblique inverse, selon le shell de ligne de commande que vous utilisez.