Comment échapper aux espaces dans les chemins de fichiers sur la ligne de commande Windows

Contenu

Fenêtre d'invite de commandes sous Windows 10

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”.

Erreur d'invite de commande lorsque les espaces ne sont pas échappés

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.

Inclure des espaces entre guillemets doubles à l'invite de commande

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

Erreur d'échappement de l'espace caret à l'invite de commande

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

Espace caret s'échappant du travail à l'invite de commande

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.

Échappez-vous des espaces de sépulture dans PowerShell


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.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.