Par exemple, quelle est l'alternative à cette commande sans guillemets:
CD "c:\Documents and Settings"
La raison pour laquelle je ne souhaite pas utiliser de guillemets est que cette commande fonctionne:
SVN add mypathname\*.*
mais cette commande ne marche PAS:
SVN add "mypathname\*.*"
Le problème étant que lorsque je change de mypathname pour un chemin contenant des espaces, je dois tout citer. Par exemple:
SVN add "c:\Documents and Settings\username\svn\*.*"
Mais lorsque j'essaie, j'obtiens le message d'erreur suivant:
svn: warning: 'c:\Documents and Settings\username\svn\*.*' not found
Réponses:
Tout fonctionne presque pour moi, mais avez-vous peut-être essayé line5 .. échapper à l'espace avec un symbole caret (^)
Ou par exemple ci-dessous où le curseur fait toute la différence.
On dirait d’en bas que le symbole caret pourrait être votre réponse, voir la ligne 3 ci-dessous
la source
J'ai trouvé que mettre des guillemets autour d'une partie de l'emplacement fonctionne. Dans ton cas:
Bien que cela utilise des guillemets, il est important de noter que les astérisques se trouvent en dehors des guillemets, ils fonctionnent donc toujours correctement.
la source
Malgré les réponses qui donnent l’illusion que cela fonctionne, le fait est que vous ne pouvez pas vous faufiler dans les arguments habituels de cmd. C'est facile à prouver:
Enregistrer "
echo %1
" soustest.bat
. Ce fichier de commandes affichera le premier argument que cmd nous transmet.Maintenant, essayez et exécutez
test.bat
, en définissant la valeur%1
surfoo bar
. (Notez qu'il y a un caractère d'espace entrefoo
etbar
.)Essai-et-erreur pendant quelques années et se rendre compte qu'il n'y a aucun moyen de le faire . Les gens suggéreront d'échapper à l'aide
^
, maistest.bat foo^ bar
ne produiront pasfoo bar
.Donc, il n'y a aucun moyen d'obtenir la sortie
foo bar
, et le plus proche que nous puissions obtenir est d'exécutertest.bat foo" "bar
qui produitfoo" "bar
ou d'exécutertest.bat "foo bar"
qui produit"foo bar"
.Maintenant, la raison pour laquelle les autres réponses semblent au travail parce que le
cd
fait de son propre analyse supplémentaire, écartant du comportement de argument habituel en passant (l'habituel%1
,%2
,%3
et etc dans des fichiers batch typiques).Par exemple, considérons la commande particulière:
Pourquoi ça marche? Cela est dû à
cd
se faire quelque chose d' équivalent de rejoindre les 7 habituels arguments dans une logique. Selon les arguments de cmd qui passent les normes, nous voyons 7 arguments:c:\documents
and
settings
\some
folder
with
spaces
C'est comme si
cd
tous les 7 arguments ont été réunis dans un argument logique, cearray.join(" ")
qui donne le chemin suivant:Notez que ce comportement est propre à
cd
seulement (et à certaines autres fonctions). Cela n'a rien à voir avec les arguments habituels.En effet,
cd
a une autre particularité. Rappelez-vous que nous avons indiqué ci-dessus que nous ne pouvions pas obtenir la sortiefoo bar
? La sortie la plus proche que nous puissions obtenir est en exécutant:qui produit
foo" "bar
ou:qui produit
"foo bar"
ou:qui produit
"foo "bar
ou:qui produit
foo" bar"
ou:qui produit
"foo b"ar
ou:qui produit
fo"o bar"
ou:qui produit
fo"o ba"r
ou:qui produit
"fo"o" bar"
ou:qui produit
"f""o""o"" ""b""a""r"
, ou même:qui produit
""""f"""o""""o"" ""ba"""r""""""""""
.Tous les exemples ci-dessus présentent une similitude, à savoir qu'ils produiront
foo bar
après élimination des"
caractères.cd
L'auteur doit avoir compris cela aussi ... si nous devions déduire de soncd
comportement particulier qui élimine tout"
ce qu'il reçoit , permettant à toutes ces commandes de fonctionner:cd c:\documents and settings
cd "c:\documents and settings"
cd "c:"\"documents and settings"
cd c:\"documents" "and" "settings"
cd c:\"docu"ments an"d set"tings"
cd c:"\"docu"ments an"d set"ti"""ngs
cd "c"":""\"docu"ments an"d set"ti"""ngs
cd "c"":""\"do""cu"me"nts a"n""d set"ti"""ngs
cd c"""":""""\"""d"""oc""""u"me"""""nt"s a"n""d set"""""""ti""""ngs
la source
argv[]
ouGetCommandLine()
? pastebin.com/raw/t55iv0JSLe nom de fichier court semble fonctionner comme une brise.
"E: \ Progra ~ 1 \ Java \ Eclipse \ eclipse.exe" -vmargs -Xms1024m -Xmx2048m
Pour booster la mémoire ..;)
la source
Utilisez le nom de fichier court 8.3. Par exemple:
la source
Pour ceux qui parlent de remplacement 8.3, veuillez noter les deux choses suivantes:
Alors
c:\docume~1
peut pointer vers:Ce n’est pas sûr, à moins d’obtenir le nom abrégé et de l’utiliser dans des opérations atomiques.
Bien qu'il soit très rare qu'ils changent, il est fréquent qu'ils n'existent pas.
Si vous voulez savoir si la version 8.3 existe pour un dossier / fichier particulier, testez-la avec le paramètre
/X
d'unedir
commande ou encapsulez-la sur un objetfor
pour obtenir uniquement cette partie, etc.Pour plus d'informations sur l'activation / la désactivation de la version 8.3 sur NTFS, consultez cet article du support technique Microsoft:
https://support.microsoft.com/en-us/help/121007/how-to-disable-8-3-file-name- création-sur-ntfs-partitions
la source
Suite au message de @ Pang, et aux autres discussions sur les noms abrégés et les pièges, voici un moyen de résoudre dynamiquement un nom long en un nom abrégé:
Ensuite, vous pouvez évidemment utiliser le nom abrégé plutôt que les guillemets.
la source