cmd.exe /k-schakelaar

Ik probeer met cmd naar een map te gaan en vervolgens een batchbestand uit te voeren

bijv.

cmd /k cd "C:\myfolder"
startbatch.bat

Ik heb het ook geprobeerd (zonder succes)

cmd cd /k cd "C:\myfolder" | startbatch.bat

Hoewel de eerste regel (cmd /k) goed lijkt te werken, wordt de tweede opdracht nooit uitgevoerd. Ik gebruik Vista als besturingssysteem


Antwoord 1, autoriteit 100%

De juiste syntaxis is:

cmd /k "cd c:\myfolder & startbatch.bat"

Antwoord 2, autoriteit 17%

ssg heeft al het juiste antwoord gepost. Ik zou alleen /d switch toevoegen aan de opdracht cd(bijv. cd /d drive:\directory). Dit zorgt ervoor dat de opdracht werkt als de huidige map zich op een ander station bevindt dan de map waarnaar u wilt cd’en.


Antwoord 3, autoriteit 4%

cmd cd /k "cd C:\myfolder; startbatch.bat"

of waarom voer je niet cmd /k c:\myfolder\startbatch.batuit, en doe je cd c:\myfolderin het .bat-bestand?


Antwoord 4, autoriteit 4%

Ik zie geen antwoord dat dit adresseert, dus als iemand toegang nodig heeft tot een map met ruimte in de naam, kunt u bijvoorbeeld extra aanhalingstekens toevoegen

cmd.exe /K """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"" & powershell.exe"

Vanuit PowerShell moet u de aanhalingstekens escapen met het aanhalingsteken `

cmd.exe /K "`"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" & powershell.exe"

Let op de aanhalingstekens met escapetekens

`"

binnen de padtekenreeks:

"`"C:\my path\`""

Dit voert het juiste commando uit in cmd, d.w.z. het pad tussen aanhalingstekens dat zou moeten werken.

De voorbeeldopdracht hierboven initialiseert de opdrachtprompt van de MSVC-ontwikkelaar en gaat terug naar PowerShell, waarbij de omgeving wordt geërfd en toegang wordt verleend tot de MSVC-tools.


Antwoord 5, autoriteit 2%

U kunt &of &&gebruiken als scheidingsteken voor opdrachten in Windows.

Voorbeeld:

cmd cd /K "cd C:\myfolder && startbatch.bat"

Antwoord 6

Ik geef dit als antwoord omdat ik deze vraag in een opmerking heb gezien en nog niet kan reageren.

cmd /k "cd c:\myfolder & startbatch.bat"

werkt, en als je spaties hebt:

cmd /k "cd "c:\myfolder" & startbatch.bat"

Zoals ik het begrijp, wordt het commando aan cmd doorgegeven als "cd "c:\myfolder" & startbatch.bat", dat vervolgens wordt opgesplitst in cd "c:\myfolder"&startbatch.batwaarna de resterende " "het pad als tekenreeks verzorgt.

Je kunt ook &&, |en ||gebruiken, afhankelijk van wat je wilt bereiken.

Other episodes