¿Cómo uso espacios en el símbolo del sistema?

192

¿Cómo puedo usar espacios en la línea de comandos de Windows?

cmd /C C:\Program Files (x86)\WinRar\Rar.exe a D:\Hello 2\File.rar D:\Hello 2\*.*
faressoft
fuente

Respuestas:

261

Las comillas simples no funcionarán en ese caso. Debe agregar comillas alrededor de cada ruta y también encerrar todo el comando entre comillas:

cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
sakra
fuente
44
Sí, cada ruta debe estar entre comillas. Además, todo el comando tuvo que ser encerrado nuevamente por otro par de comillas. ¡Ahora funciona! ¡Gracias!
Surgen
@sakra tampoco funciona para mí. "" C: \ Archivos de programa \ WinRAR \ WinRAR.exe "a "C: \ verificación Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.rar" -ri1 -mt2 -M5 "C: \ verificación Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.bak""
MonsterMMORPG
3
@MonsterMMORPG prefijo la línea concmd /C
sakra
@sakra Quiero excluir archivos que tengan nombre con espacios CEEMEA & LATAM.doc. ¿Qué tengo que hacer? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
funcionó para mí pero sin las comillas externas: "C: \ Archivos de programa (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"
user1620090
78

Me acabo de dar cuenta de que para un caso en el que la ruta implica el uso de espacios en blanco, por ejemplo, cuando necesito acceder a la aplicación, xyzqué ubicación es:

C:\Program Files\ab cd\xyz.exe

Para ejecutar esto desde Windows cmd prompt, debe usar

C:\"Program Files"\"ab cd"\xyz.exe

o

"C:\Program Files\ab cd\xyz.exe"
Mithil D
fuente
Intenté esto pero no parece funcionar en mi caso: python "" C: \ Archivos de programa (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ sqs-poller \ node_modules \ map-checker \ python \ unit_test.py "-d" C: \ Archivos de programa (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case "-o" C: \ Program Files (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case "-o2" C: \ Archivos de programa (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case \ testcase_results.csv "" -l "C: \ Archivos de programa (x86) \ Jenkins \ Workspace \ Prueba de unidad de Map Checker \ MAP_CHECK_TMP "-restore". ¿Puede ayudar?
Hafizan
22

Si las comillas dobles no resuelven el problema, intente, por ejemplo

dir /X ~1 c:\

para obtener una lista de archivos alternativos o nombres de directorio. Salida de ejemplo:

11/09/2014 12:54 AM             8,065  DEFAUL~1.XML Default Desktop Policy.xml
06/12/2014  03:49 PM    <DIR>          PROGRA~1     Program Files 
10/12/2014  12:46 AM    <DIR>          PROGRA~2     Program Files (x86)

Ahora use el archivo corto de 8 caracteres o el nombre de la carpeta en la quinta columna, por ejemplo, PROGRA ~ 1 o DEFAUL ~ 1.XML, en sus comandos. Por ejemplo:

set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45 
rob2universe
fuente
Este es el camino fácil. No hay comillas dobles-dobles con mucky-muck involucrados.
Dave Anderson
¿Sabía que la versión 8.3 corta es una opción NTFS y se puede deshabilitar? No confíes en eso.
Zan Lynx
10

Encierre las rutas que contienen espacios con comillas dobles.

cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
PINCHAZO
fuente
Entonces, el problema radica en cuál es la sintaxis del argumento Rar.exe. Puede que lo estés usando mal. Tal vez intente "D:\Hello 2\"o en "D:\Hello 2"lugar de "D:\Hello 2\*.*"?
JAB
cmd / C "C: \ Archivos de programa (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (No tiene espacios y funciona) pero cómo lidiar con espacios?
faressoft
@JAB si necesita excluir un archivo con nombre con espacios como CEEMEA & LATAM.doc. ¿Que debería ser? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
10

Intente proporcionar nombres de ruta complejos entre comillas dobles (e incluya extensiones de archivo al final para los archivos).

Para archivos:

call "C:\example file.exe"

Para el directorio:

cd "C:\Users\User Name\New Folder"

CMD interpreta el texto con comillas dobles ("xyz") como una cadena y el texto dentro de comillas simples ('xyz') como un comando. Por ejemplo:

FOR %% A en ('dir / b / s * .txt') do ('comando')

FOR %% A en ('dir / b / s * .txt') do (echo "%% A")

Y una cosa buena, cmd no es * sensible a mayúsculas y minúsculas como bash. Por lo tanto, "New fiLE.txt" y "new file.TXT" son similares.

* Nota: Las variables %% A en el caso anterior distinguen entre mayúsculas y minúsculas (%% A no es igual a %% a).

Vaisak Mohan
fuente
¿Los guiones bajos en los nombres de archivo cuentan? Como 'nombre_archivo' vs 'nombre de archivo'
SqueakyBeak
7

Prefiero incluir el comando en el ()que es válido, lo batchque hace que sea un poco más fácil de leer:

cmd /C ("C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*")
Dan
fuente
3
set "CMD=C:\Program Files (x86)\PDFtk\bin\pdftk"
echo cmd /K ""%CMD%" %D% output trimmed.pdf"
start cmd /K ""%CMD%" %D% output trimmed.pdf"

esto funcionó para mí en un archivo por lotes

James Brown
fuente
2

Solo agregue comillas

Ejemplo: "C: \ Usuarios \ Nombre de usuario"

¡Espero que se haya resuelto!

Patrick Prakash
fuente
77
Lo mismo ya se ha dicho media docena de veces. ¿Qué valor adicional agrega esto?
JJJ
0

Espacios en el símbolo del sistema (en una línea de código de comando de VBA Shell)

Tuve un problema muy similar que terminó siendo un espacio en el símbolo del sistema al automatizar a través de VBA para obtener el contenido de la ventana de comandos en un archivo de texto. Este hilo fue uno de los muchos que atrapé en el camino que no me dio la solución.

Entonces, esto puede ayudar a otros con un problema similar: dado que la sintaxis con comillas siempre es difícil de corregir, creo que mostrar algunos ejemplos específicos siempre es útil. El problema adicional que obtienes al usar el símbolo del sistema en VBA a través de la cosa de Shell es que la línea de código a menudo no se equivoca cuando algo sale mal: de hecho, un parpadeo de la ventana de recomendación negra induce a error al pensar que se hizo algo.

Como ejemplo ... digamos que tengo una carpeta, con un archivo de texto como en

C: \ Carpeta Alans \ test1.txt ( https://imgur.com/FELSdB6 )

El espacio allí en el nombre de la carpeta da el problema.

Algo como esto funcionaría, suponiendo que la carpeta, AlansFolder, exista

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub

Esto no funcionara. (No fallará).

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub

Incluir pares de comillas alrededor del camino hará que funcione

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub

(Por cierto, si el archivo de texto no existe, se creará).

Con el beneficio de la retrospectiva, podemos ver que mi solución se vincula aproximadamente con algunas ya dadas.

Convirtiendo esa línea de código a un comando dado manualmente tendríamos

ipconfig /all > "C:\Alans Folder\test1.txt"

Eso parece funcionar

Esto funciona también

ipconfig /all > C:\AlansFolder\test1.txt

Esto no

ipconfig /all > C:\Alans Folder\test1.txt

Esta forma final también funciona y se vincula con la solución de sacra ... ". Debe agregar comillas alrededor de cada ruta y también incluir todo el comando entre comillas “… ..

cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""
Alan Elston
fuente
-3

Puede resolver este problema por cd comando , este comando comprende espacios sin comillas dobles y puede llamar a cualquier programa de esta manera, por ejemplo:

C: \ Windows \ system32> cd c: \ Archivos de programa \ MongoDB \ Server \ 3.2 \ bin

c: \ Archivos de programa \ MongoDB \ Server \ 3.2 \ bin> mongo ahora símbolo del sistema llame a mongo.exe

Karen
fuente