2012-01-03 19 views
23

Sto cercando di passare a una directory utilizzando cmd e quindi di eseguire un file batchcmd.exe/k switch

ad es.

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

Ho anche cercato (senza successo)

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

Sebbene la prima linea (cmd/k) sembra funzionare ok, ma il secondo comando è mai eseguito. Sto usando Vista come sistema operativo

+0

È possibile che la domanda sopra possa essere più pertinente per il forum Super User Stack Exchange? –

+1

Stack Overflow è un sito per domande di programmazione e sviluppo. Questa domanda sembra essere fuori tema perché non riguarda la programmazione o lo sviluppo. Vedi [Quali argomenti posso chiedere qui] (http://stackoverflow.com/help/on-topic) nel Centro assistenza. Forse [Super User] (http://superuser.com/) sarebbe un posto migliore per chiedere. – jww

risposta

42

sintassi corretta è:

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

Grazie ssg !!!! – Mike

+0

funziona ancora in win 7 – stackuser83

+0

Cosa succede se la directory è chiamata "c: \ my folder \" (notare lo spazio) cosa devo fare allora? –

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

o, perché non si esegue cmd /k c:\myfolder\startbatch.bat, e non cd c:\myfolder nel file .bat?

+2

Non credo che ';' possa essere usato come separatore di comandi nello script batch di Windows. Tipicamente 'e 'invece usato. –

6

ssg già inserita risposta corretta. Vorrei solo aggiungere/d passare al comando cd (ad esempio cd /d drive:\directory). Ciò garantisce che il comando funzioni nel caso in cui la directory corrente si trovi su un'unità diversa dalla directory in cui si desidera effettuare il cd.

0

È possibile utilizzare & o && come separatore di comandi in Windows.

Esempio:

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

io do questo come una risposta perché ho visto questa domanda in un commento e non posso commentare ancora.

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

opere, e se si dispone di spazi:

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

Da quanto ho capito, il comando è passato a cmd come "cd "c:\myfolder" & startbatch.bat", che viene poi suddiviso in cd "c:\myfolder"&startbatch.bat a quale punto il rimanente " " si prende cura del percorso come stringa.

È inoltre possibile utilizzare &&, | e || in base a ciò che si desidera ottenere.

+0

Per chi è interessato ad esplorare la differenza tra '&', '&&', '|' e '||': http://www.chebucto.ns.ca/~ak621/DOS/DOS-Char.html – Marc

0

non riesco a vedere una risposta affrontare questo, quindi se qualcuno ha bisogno di accedere a una directory che dispone di spazio nel suo nome, è possibile aggiungere le citazioni supplementari, ad esempio

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

Da PowerShell bisogno di sfuggire alle citazioni utilizzando il backquote `

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

Avviso le virgolette escape

`" 

all'interno della stringa di percorso:

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

Questo eseguirà il comando corretto in cmd, cioè il percorso circondato con citazioni che dovrebbe funzionare.

Il comando di esempio sopra inizializzerà il prompt dei comandi dello sviluppatore MSVC e tornerà a PowerShell, ereditando l'ambiente e dando accesso agli strumenti MSVC.

+0

mai sentito parlare di fuggire con 'in batch. – Stephan

+0

Vero, ho aggiornato la risposta con l'esempio corretto per 'cmd'. L'altro esempio era per chiamare 'cmd' da' powershell'. Spero che la risposta sia più chiara ora. – Bhyd