Hoe kan ik spaties in de Windows-opdrachtregel gebruiken?
cmd /C C:\Program Files (x86)\WinRar\Rar.exe a D:\Hello 2\File.rar D:\Hello 2\*.*
Antwoord 1, autoriteit 100%
Enkele aanhalingstekens zijn in dat geval niet voldoende. Je moet aanhalingstekens plaatsen rond elk pad en ook het hele commando tussen aanhalingstekens plaatsen:
cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
Antwoord 2, autoriteit 31%
Ik kwam er net achter dat voor een geval waarin het pad het gebruik van witruimtetekens omvat, bijvoorbeeld wanneer ik toegang moet krijgen tot de app xyz
welke locatie is:
C:\Program Files\ab cd\xyz.exe
Als u dit wilt uitvoeren vanaf de cmd-prompt van Windows, moet u
. gebruiken
C:\"Program Files"\"ab cd"\xyz.exe
of
"C:\Program Files\ab cd\xyz.exe"
Antwoord 3, autoriteit 9%
Als dubbele aanhalingstekens het probleem niet oplossen, probeer dan bijvoorbeeld
dir /X ~1 c:\
om een lijst met alternatieve bestands- of mapnamen te krijgen. Voorbeelduitvoer:
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)
Gebruik nu de korte bestands- of mapnaam van 8 tekens in de 5e kolom, b.v. PROGRA~1 of DEFAUL~1.XML, in uw commando’s. Bijvoorbeeld:
set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45
Antwoord 4, autoriteit 4%
Ik geef er de voorkeur aan om het commando in ()
in te sluiten, wat een geldige batch
is, waardoor het een beetje gemakkelijker te lezen is:
cmd /C ("C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*")
Antwoord 5, autoriteit 4%
Sluit de paden met spaties tussen dubbele aanhalingstekens.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Antwoord 6, autoriteit 3%
Probeer complexe padnamen tussen dubbele aanhalingstekens te plaatsen (en voeg bestandsextensies toe aan het einde voor bestanden.)
Voor bestanden:
call "C:\example file.exe"
Voor telefoonboek:
cd "C:\Users\User Name\New Folder"
CMD interpreteert tekst met dubbele aanhalingstekens (“xyz”) als één string en tekst tussen enkele aanhalingstekens (‘xyz’) als een commando.
Bijvoorbeeld:
VOOR %%A in (‘dir /b /s *.txt’) do (‘commando’)
VOOR %%A in (‘dir /b /s *.txt’) do (echo “%%A”)
En een goede zaak, cmd is niet* hoofdlettergevoelig zoals bash. Dus “Nieuw bestand.txt” en “nieuw bestand.TXT” lijken erop.
*Opmerking: de %%A-variabelen in bovenstaande hoofdletters zijn hoofdlettergevoelig (%%A is niet gelijk aan %%a).
Antwoord 7
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"
dit werkte voor mij in een batchbestand
Antwoord 8
Gewoon aanhalingsteken toevoegen
Voorbeeld:“C:\Gebruikers\Gebruikersnaam”
Hoop dat het is opgelost!
Antwoord 9
Spaties in de Commend Prompt (in een VBA Shell-opdrachtcoderegel)
Ik had een soortgelijk probleem dat uiteindelijk een spatie in de opdrachtprompt werd bij het automatiseren via VBA om de inhoud van het opdrachtvenster in een tekstbestand te krijgen. Deze thread was een van de vele die ik onderweg tegenkwam en die me niet helemaal de oplossing opleverden.
Dus dit kan anderen helpen met een soortgelijk probleem: aangezien de syntaxis met aanhalingstekens altijd moeilijk goed te krijgen is, denk ik dat het altijd nuttig is om enkele specifieke voorbeelden te tonen.
Het extra probleem dat je krijgt bij het gebruik van de opdrachtprompt in VBA via het Shell-ding, is dat de coderegel vaak geen foutmelding geeft als er iets misgaat: in feite misleidt een knipperen van het zwarte aanbevelingsvenster om te denken dat er iets is gedaan.
Als voorbeeld stel dat ik een map heb, met daarin een tekstbestand zoals op
C:\Alans Folder\test1.txt ( https://imgur.com/FELSdB6)
De spatie daar in de mapnaam geeft het probleem.
Zoiets zou werken, ervan uitgaande dat de map, AlansFolder, bestaat
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub
Dit werkt niet. (Het zal niet fout gaan).
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub
Als u aanhalingstekens rond het pad opneemt, werkt het
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub
(Trouwens, als het tekstbestand niet bestaat, wordt het gemaakt).
Met het voordeel van achteraf kunnen we zien dat mijn oplossing ongeveer aansluit bij een aantal die al zijn gegeven..
Het omzetten van die coderegel naar een handmatig gegeven commando zouden we hebben
ipconfig /all > "C:\Alans Folder\test1.txt"
Dat lijkt te werken
Dit werkt ook
ipconfig /all > C:\AlansFolder\test1.txt
Dit niet
ipconfig /all > C:\Alans Folder\test1.txt
Deze definitieve vorm werkt ook en sluit aan bij de oplossing uit sacra . Je moet aanhalingstekens plaatsen rond elk pad en ook het hele commando tussen aanhalingstekens plaatsen ..
cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""
Antwoord 10
Probeer aanhalingstekens te gebruiken.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Antwoord 11
Het kan dit probleem oplossen met de opdracht cd, deze opdracht begrijpt spaties zonder dubbele aanhalingstekens en je kunt elk programma op deze manier aanroepen, bijvoorbeeld:
C:\Windows\system32>cd c:\Program Files\MongoDB\Server\3.2\bin
c:\Program Files\MongoDB\Server\3.2\bin>mongo
nu opdrachtprompt bel mongo.exe