102 votes

Comment échapper aux espaces dans la ligne de commande sous Windows sans utiliser de guillemets ?

Par exemple, quelle est l'alternative à cette commande sans guillemets :

CD "c:\Documents and Settings"

La raison pour laquelle je ne veux pas utiliser de guillemets est que cette commande fonctionne effectivement :

   SVN add mypathname\*.*

mais cette commande ne fonctionne pas :

   SVN add "mypathname\*.*"

Le problème est que lorsque je modifie mon nom de chemin pour un chemin contenant des espaces, je dois citer l'ensemble du chemin. Par exemple :

SVN add "c:\Documents and Settings\username\svn\*.*"

Mais lorsque j'essaie de le faire, j'obtiens le message d'erreur suivant :

svn: warning: 'c:\Documents and Settings\username\svn\*.*' not found

3voto

Claudio Points 31

Pour ceux qui parlent du remplacement de la 8.3, veuillez noter les deux choses suivantes :

  • 8.3 peut être réglé sur désactivé (ou activé) sur NTFS, donc il peut ne pas toujours exister.
  • Le nom d'un fichier/dossier peut changer sans préavis simplement en créant, renommant ou supprimant d'autres éléments dans le même dossier.

Alors c:\docume~1 peut indiquer :

  • Nulle part (être invalide)
  • Le dossier que vous voulez
  • Un autre dossier
  • Un dossier variable dans le temps

Ce n'est pas sûr, sauf si vous obtenez le nom court et l'utilisez dans des opérations atomiques.

S'il est très rare qu'ils changent, il est fréquent qu'ils n'existent pas.

Si vous voulez savoir si 8.3 existe pour un dossier/fichier particulier, testez-le avec le paramètre /X sur un dir ou l'encapsuler dans une commande for pour n'obtenir que cette partie, etc.

Pour en savoir plus sur la manière d'activer/désactiver 8.3 sur NTFS, consultez cet article d'assistance Microsoft :
https://support.microsoft.com/en-us/help/121007/how-to-disable-8-3-file-name-creation-on-ntfs-partitions

0voto

BuvinJ Points 251

Pour faire suite au message de @Pang, et à d'autres discussions sur les noms courts et les pièges, voici une façon de résoudre dynamiquement un nom long en un nom court :

for %A in ("C:\Some\long path\which must exist\to be resolved") do @echo %~sA

Ensuite, vous pouvez évidemment utiliser le nom court plutôt que les guillemets.

0voto

Kjara Points 101

Vous pouvez également essayer

c:\'Documents and Settings'\username\'some space here'\svn\*.*

c'est-à-dire que tous les noms de dossiers contenant des espaces doivent être entourés de guillemets simples (').

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X