Por ejemplo, cuál es la alternativa a este comando sin comillas:
CD "c:\Documents and Settings"
La razón por la que no quiero usar comillas es que este comando sí funciona:
SVN add mypathname\*.*
pero este comando NO funciona:
SVN add "mypathname\*.*"
El problema es que cuando cambio mypathname por una ruta con espacios, necesito citar todo. Por ejemplo:
SVN add "c:\Documents and Settings\username\svn\*.*"
Pero cuando intento esto me sale el siguiente mensaje de error:
svn: warning: 'c:\Documents and Settings\username\svn\*.*' not found
Respuestas:
Casi todo funciona para mí, pero tal vez has intentado la línea 5 ... escapar del espacio con un símbolo de intercalación (^)
O, por ejemplo, debajo de donde el cursor realmente marca la diferencia
Se ve desde abajo como el símbolo de intercalación puede ser su respuesta, vea la línea 3 a continuación.
fuente
Descubrí que poner comillas alrededor de una parte de la ubicación funciona. En tu caso:
Aunque esto utiliza comillas, lo importante es notar que los asteriscos están fuera de las comillas, por lo que aún funcionan correctamente.
fuente
A pesar de las respuestas que dan la ilusión de que funciona, el hecho es que no puede colarse en los espacios en los argumentos habituales de cmd. Esto es fácil de probar:
Guardar "
echo %1
" comotest.bat
. Este archivo por lotes generará el primer argumento que cmd nos pasa.Ahora, intente y ejecute
test.bat
, estableciendo el valor de%1
afoo bar
. (Tenga en cuenta que hay un espacio de caracteres entrefoo
ybar
.)Prueba y error durante unos años y date cuenta de que no hay forma de hacerlo . La gente sugerirá escapar usando
^
, perotest.bat foo^ bar
no dará salidafoo bar
.Por lo tanto, no hay forma de obtener la salida
foo bar
, y lo más cerca que podemos estar es ejecutar lotest.bat foo" "bar
que producefoo" "bar
, o ejecutar lotest.bat "foo bar"
que produce"foo bar"
.Ahora, la razón por las otras respuestas aparecen al trabajo se debe a que
cd
hace su propio análisis adicional, que diverge del comportamiento del argumento habitual que pasa (la habitual%1
,%2
,%3
y etc en archivos por lotes típicos).Por ejemplo, considere el comando peculiar:
Por que funciona Esto se debe a
cd
sí mismo haciendo algo equivalente a unirse a los 7 habituales argumentos en un uno lógico. Según el argumento cmd que pasa las normas, vemos 7 argumentos:c:\documents
and
settings
\some
folder
with
spaces
Es como si
cd
hubiera unido todos los 7 argumentos en uno lógico, haciendo algo similararray.join(" ")
, lo que produce el camino:Tenga en cuenta que este comportamiento es peculiar
cd
solo (y algunas otras funciones). No tiene nada que ver con pasar argumentos habituales.De hecho,
cd
tiene otra peculiaridad. ¿Recuerdas que dijimos anteriormente que no pudimos obtener la salidafoo bar
? La salida más cercana que podemos obtener es ejecutando:que produce
foo" "bar
, o:que produce
"foo bar"
, o:que produce
"foo "bar
, o:que produce
foo" bar"
, o:que produce
"foo b"ar
, o:que produce
fo"o bar"
, o:que produce
fo"o ba"r
, o:que produce
"fo"o" bar"
, o:que produce
"f""o""o"" ""b""a""r"
, o incluso:que produce
""""f"""o""""o"" ""ba"""r""""""""""
.Todos los ejemplos anteriores tienen una similitud, que es que producirán
foo bar
después de que recortemos los"
caracteres.cd
El autor debe haberse dado cuenta de esto también ... si tuviéramos que inferir delcd
comportamiento peculiar que recorta todo"
lo que recibe , permitiendo que todos estos comandos funcionen: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
fuente
argv[]
oGetCommandLine()
? pastebin.com/raw/t55iv0JSEl nombre de archivo corto parece funcionar como una brisa.
"E: \ Progra ~ 1 \ Java \ Eclipse \ eclipse.exe" -vmargs -Xms1024m -Xmx2048m
Para aumentar la memoria ..;)
fuente
Use el nombre de archivo corto 8.3. Por ejemplo:
fuente
Para aquellos que hablan sobre el reemplazo 8.3, tenga en cuenta las siguientes dos cosas:
Entonces
c:\docume~1
puede señalar:No es seguro, a menos que obtenga el nombre corto y lo use en operaciones atómicas.
Aunque es muy raro que cambien, es común que no existan.
Si desea saber si existe 8.3 para una carpeta / archivo en particular, pruébelo con un parámetro
/X
en undir
comando o encapsúlelo en unfor
solo para obtener esa parte, etc.Para obtener más información sobre cómo habilitar / deshabilitar 8.3 en NTFS, consulte este artículo de soporte de Microsoft:
https://support.microsoft.com/en-us/help/121007/how-to-disable-8-3-file-name- creacion-en-particiones-ntfs
fuente
Continuando con la publicación de @ Pang, y otros discutiendo nombres cortos y las trampas, aquí hay una manera de resolver dinámicamente un nombre largo a un nombre corto:
Entonces, obviamente, puede usar el nombre corto en lugar de las comillas.
fuente