Risposte:
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\*.*""
cmd /C
CEEMEA & LATAM.doc
. Cosa dovrei fare? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
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 xyz
quale 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"
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
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\*.*"
Rar.exe
realtà. Potrebbe essere stato utilizzato in modo errato. Forse provare "D:\Hello 2\"
o "D:\Hello 2"
invece di "D:\Hello 2\*.*"
?
CEEMEA & LATAM.doc
. Che cosa dovrebbe essere? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
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).
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
Aggiungi solo le virgolette
Esempio: "C: \ Users \ Nome utente"
Spero che sia stato risolto!
Dovresti provare a usare le virgolette.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
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""
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