Ответ 1
Правильный синтаксис:
cmd /k "cd c:\myfolder & startbatch.bat"
Я пытаюсь переключиться на каталог с помощью cmd, а затем выполнить пакетный файл
например.
cmd /k cd "C:\myfolder"
startbatch.bat
Я также пробовал (без успеха)
cmd cd /k cd "C:\myfolder" | startbatch.bat
Хотя первая строка (cmd/k), похоже, работает нормально, но вторая команда никогда не запускается. Я использую Vista в качестве ОС
Правильный синтаксис:
cmd /k "cd c:\myfolder & startbatch.bat"
ssg уже отправил правильный ответ. Я бы добавил только /d переключиться на команду cd
(например, cd /d drive:\directory
). Это гарантирует, что команда работает в случае, если текущая директория находится на другом диске, чем каталог, к которому вы хотите подключиться.
cmd cd /k "cd C:\myfolder; startbatch.bat"
или, почему бы вам не запустить cmd /k c:\myfolder\startbatch.bat
и сделать cd c:\myfolder
в .bat файле?
Вы можете использовать &
или &&
в качестве разделителя команд в Windows.
Пример:
cmd cd /K "cd C:\myfolder && startbatch.bat"
Я даю это как ответ, потому что я видел этот вопрос в комментарии и не могу комментировать.
cmd /k "cd c:\myfolder & startbatch.bat"
работает, и если у вас есть пробелы:
cmd /k "cd "c:\myfolder" & startbatch.bat"
Как я понимаю, команда передается в cmd как "cd "c:\myfolder" & startbatch.bat"
, который затем разбивается на cd "c:\myfolder"
&
startbatch.bat
, после чего оставшаяся " "
заботится о пути как строке.
Вы также можете использовать &&
, |
и ||
в зависимости от того, чего вы хотите достичь.
Я не вижу ответа, обращаясь к этому, поэтому, если кому-то нужен доступ к каталогу с пространством в его имени, вы можете добавить дополнительные кавычки, например
cmd.exe /K """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"" & powershell.exe"
Из PowerShell вам нужно избежать кавычек, используя backquote `
cmd.exe /K "`"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" & powershell.exe"
Обратите внимание на скрытые кавычки
`"
внутри строки пути:
"`"C:\my path\`""
Это выполнит правильную команду в cmd
, то есть путь, окруженный кавычками, которые должны работать.
Приведенная выше примерная команда инициализирует командную строку разработчика MSVC и вернется к PowerShell, наследует среду и предоставляет доступ к инструментам MSVC.