Come posso usare gli spazi nel Prompt dei comandi?


192

Come posso usare gli spazi nella riga di comando di Windows?

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

Risposte:


261

Le virgolette singole non funzioneranno in questo caso. Devi aggiungere le virgolette attorno a ciascun percorso e racchiudere anche l'intero comando tra virgolette:

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

4
Sì, ogni percorso deve essere racchiuso tra virgolette. Inoltre, l'intero comando doveva essere racchiuso nuovamente da un'altra coppia di virgolette. Ora funziona! Grazie!
Sorge

@sakra non funziona neanche per me. "" C: \ Program Files \ WinRAR \ WinRAR.exe "a "C: \ veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.rar" -ri1 -mt2 -M5 "C: \ veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.bak""
MonsterMMORPG

3
@MonsterMMORPG prefigge la riga concmd /C
sakra l'

@sakra Voglio escludere il file che ha un nome con spazi CEEMEA & LATAM.doc. Cosa dovrei fare? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq,

ha funzionato per me ma senza le citazioni esterne: "C: \ Programmi (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"
user1620090

78

Ho appena capito che per un caso in cui il percorso comporta l'uso di caratteri spazi bianchi, ad esempio, quando devo accedere all'app in xyzquale posizione si trova:

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

Per eseguire questo dal prompt di cmd di Windows, è necessario utilizzare

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

o

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

Ho provato questo, ma non sembra funzionare nel mio caso: "" C: \ Programmi (x86) \ Jenkins \ workspace \ Map Test Unit Test \ sqs-poller \ node_modules \ map-checker \ python \ unit_test.py "-d" C: \ Programmi (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case "-o" C: \ Programmi (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case "-o2" C: \ Programmi (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case \ testcase_results.csv "" -l "C: \ Programmi (x86) \ Jenkins \ workspace \ Map Test Unit Test \ MAP_CHECK_TMP "-restore". può aiutarti?
hafizan

22

Se le doppie virgolette non risolvono il problema, prova ad es

dir /X ~1 c:\

per ottenere un elenco di nomi di file o directory alternativi. Esempio di output:

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)

Ora usa il nome breve del file di 8 caratteri o il nome della cartella nella 5a colonna, ad esempio PROGRA ~ 1 o DEFAUL ~ 1.XML, nei tuoi comandi. Per esempio:

set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45 

Questo è il modo semplice. Nessuna citazione doppia-doppia coinvolta mucky-muck.
Dave Anderson,

Sei a conoscenza del fatto che short 8.3 è un'opzione NTFS e può essere disabilitato? Non fare affidamento su di esso.
Zan Lynx,

10

Racchiudere i percorsi contenenti spazi tra virgolette doppie.

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

Quindi il problema risiede in quale sia la sintassi dell'argomento in Rar.exerealtà. Potrebbe essere stato utilizzato in modo errato. Forse provare "D:\Hello 2\"o "D:\Hello 2"invece di "D:\Hello 2\*.*"?
JAB,

cmd / C "C: \ Programmi (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (Non ha spazi ed è funzionante) ma come gestire gli spazi?
faressoft,

@JAB se è necessario escludere file con nome con spazi come CEEMEA & LATAM.doc. Che cosa dovrebbe essere? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq,

10

Prova a fornire percorsi complessi tra virgolette (e includi le estensioni dei file alla fine dei file).

Per i file:

call "C:\example file.exe"

Per directory:

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

CMD interpreta il testo con virgolette doppie ("xyz") come una stringa e il testo tra virgolette singole ('xyz') come comando. Per esempio:

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

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

E una cosa buona, cmd non è sensibile al maiuscolo / minuscolo come bash. Quindi "New fiLE.txt" e "new file.TXT" sono simili.

* Nota: le variabili %% A nel caso precedente fanno distinzione tra maiuscole e minuscole (%% A non è uguale a %% a).


Contano i caratteri di sottolineatura nei nomi dei file? Come 'nome_file' vs 'nome file'
SqueakyBeak

7

Preferisco racchiudere il comando in ()cui è valido, il batchche rende un po 'più semplice la lettura:

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

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"

questo ha funzionato per me in un file batch


2

Aggiungi solo le virgolette

Esempio: "C: \ Users \ Nome utente"

Spero che sia stato risolto!


7
La stessa cosa è già stata detta mezza dozzina di volte. Quale valore aggiunto aggiunge?
JJJ


0

Spazi nel prompt di Commend (in una riga di codice del comando Shell VBA)

Ho avuto un problema molto simile che ha finito per essere uno spazio nel prompt dei comandi durante l'automazione tramite VBA per ottenere i contenuti dalla finestra di comando in un file di testo. Questo thread è stato uno dei tanti che ho catturato lungo la strada che non mi ha del tutto risolto.

Quindi questo può aiutare gli altri con un problema simile: poiché la sintassi con le virgolette è sempre difficile da ottenere, penso che mostrare alcuni esempi specifici sia sempre utile. Il problema aggiuntivo che si ottiene utilizzando il prompt dei comandi in VBA tramite la cosa Shell, è che la riga di codice spesso non si guasta quando qualcosa va storto: in realtà un battito di ciglia della finestra Black Commend induce a pensare che qualcosa sia stato fatto.

Ad esempio ... dire che ho una cartella, con un file di testo come in

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

Lo spazio lì nel nome della cartella dà il problema.

Qualcosa del genere funzionerebbe, supponendo che la cartella, AlansFolder, esista

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

Questo non funzionerà. (Non errore).

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

Includere le coppie di virgolette attorno al percorso lo farà funzionare

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

(A proposito, se il file di testo non esiste, verrà creato).

Con il senno di poi, possiamo vedere che la mia soluzione si collega approssimativamente con alcuni già dati ..

Convertire quella riga di codice in un comando dato manualmente avremmo

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

Sembra funzionare

Funziona anche questo

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

Questo no

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

Questa forma finale funziona anche e si lega alla soluzione di sacra… ". Devi aggiungere le virgolette attorno a ciascun percorso e racchiudere anche l'intero comando tra virgolette “… ..

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

-3

Può risolvere questo problema con il comando cd , questo comando comprende gli spazi senza virgolette doppie e puoi chiamare qualsiasi programma in questo modo, ad esempio:

C: \ Windows \ system32> cd c: \ Programmi \ MongoDB \ Server \ 3.2 \ bin

c: \ Programmi \ MongoDB \ Server \ 3.2 \ bin> mongo ora il prompt dei comandi chiama mongo.exe

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.