Comment puis-je utiliser des espaces dans la ligne de commande Windows?
cmd /C C:\Program Files (x86)\WinRar\Rar.exe a D:\Hello 2\File.rar D:\Hello 2\*.*
Réponses:
Les guillemets simples ne feront pas l'affaire dans ce cas. Vous devez ajouter des guillemets autour de chaque chemin et également mettre toute la commande entre guillemets:
cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
cmd /C
CEEMEA & LATAM.doc
. Que devrais-je faire? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Je viens de comprendre que pour un cas où le chemin implique l'utilisation de caractères d'espace blanc, par exemple, lorsque j'ai besoin d'accéder à l'application, xyz
quel emplacement est:
C:\Program Files\ab cd\xyz.exe
Pour l'exécuter à partir de l'invite Windows cmd, vous devez utiliser
C:\"Program Files"\"ab cd"\xyz.exe
ou
"C:\Program Files\ab cd\xyz.exe"
Si les guillemets ne résolvent pas le problème, essayez par exemple
dir /X ~1 c:\
pour obtenir une liste d'autres noms de fichiers ou de répertoires. Exemple de sortie:
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)
Utilisez maintenant le nom de fichier ou de dossier court de 8 caractères dans la 5ème colonne, par exemple PROGRA ~ 1 ou DEFAUL ~ 1.XML, dans vos commandes. Par exemple:
set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45
Entourez les chemins contenant des espaces entre guillemets.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Rar.exe
. Vous ne l'utilisez peut-être pas correctement. Peut-être essayer "D:\Hello 2\"
ou "D:\Hello 2"
au lieu de "D:\Hello 2\*.*"
?
CEEMEA & LATAM.doc
. Que devrait-il être? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Essayez de fournir des chemins d'accès complexes entre guillemets (et incluez les extensions de fichier à la fin pour les fichiers.)
Pour les fichiers:
call "C:\example file.exe"
Pour l'annuaire:
cd "C:\Users\User Name\New Folder"
CMD interprète le texte entre guillemets doubles ("xyz") comme une chaîne et le texte entre guillemets simples ("xyz") comme une commande. Par exemple:
POUR %% A dans ('dir / b / s * .txt') do ('commande')
FOR %% A dans ('dir / b / s * .txt') do (echo "%% A")
Et une bonne chose, cmd n'est pas * sensible à la casse comme bash. Ainsi, "New fiLE.txt" et "new file.TXT" lui ressemblent.
* Remarque: les variables %% A dans la casse ci-dessus sont sensibles à la casse (%% A n'est pas égal à %% 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"
cela a fonctionné pour moi dans un fichier batch
Ajoutez simplement un guillemet
Exemple: "C: \ Users \ User Name"
J'espère qu'il a été résolu!
Vous devriez essayer d'utiliser des guillemets.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Espaces dans l'invite de recommandation (dans une ligne de code de commande VBA Shell)
J'ai eu un problème très similaire qui a fini par être un espace dans l'invite de commande lors de l'automatisation via VBA pour obtenir le contenu de la fenêtre de commande dans un fichier texte. Ce fil était l'un des nombreux que j'ai attrapés en cours de route et qui ne m'ont pas tout à fait apporté la solution.
Cela peut donc aider les autres à résoudre un problème similaire: comme la syntaxe avec des guillemets est toujours difficile à comprendre, je pense que montrer des exemples spécifiques est toujours utile. Le problème supplémentaire que vous rencontrez en utilisant l'invite de commande dans VBA via le shell, est que la ligne de code n'erreur souvent pas lorsque quelque chose ne va pas: en fait, un clin d'œil de la fenêtre de recommandation noire induit en erreur en pensant que quelque chose a été fait.
Par exemple ... disons que j'ai un dossier, avec un fichier texte comme à
C: \ Dossier Alans \ test1.txt ( https://imgur.com/FELSdB6 )
L'espace dans le nom du dossier donne le problème.
Quelque chose comme ça fonctionnerait, en supposant que le dossier, AlansFolder, existe
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub
Cela ne fonctionnera pas. (Ce ne sera pas une erreur).
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub
Inclure des paires de citations autour du chemin le fera fonctionner
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub
(À propos, si le fichier texte n'existe pas, il sera créé).
Avec le recul, nous pouvons voir que ma solution se lie approximativement à certaines déjà données.
Conversion de cette ligne de code en une commande manuelle donnée que nous aurions
ipconfig /all > "C:\Alans Folder\test1.txt"
Cela semble fonctionner
Cela fonctionne aussi
ipconfig /all > C:\AlansFolder\test1.txt
Ce n'est pas
ipconfig /all > C:\Alans Folder\test1.txt
Cette forme finale fonctionne également et se lie avec la solution de sacra…. Vous devez ajouter des guillemets autour de chaque chemin et également mettre toute la commande entre guillemets “… ..
cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""
Il peut résoudre ce problème par cd commande , cette commande comprend les espaces sans guillemets et vous pouvez appeler n'importe quel programme de cette façon par exemple:
C: \ Windows \ system32> cd c: \ Program Files \ MongoDB \ Server \ 3.2 \ bin
c: \ Program Files \ MongoDB \ Server \ 3.2 \ bin> mongo now appel de l'invite de commande mongo.exe