10

Я пытался запустить несколько программ через командный файл и столкнулся с проблемами, но это в прошлом.

Я относительно новичок в сценариях и командной строке, и это будет мой вопрос: в чем разница между следующими сценариями cmd?

Этот принят

Start Chrome

(Я предполагаю, что некоторые установленные программы распознаются по названию, хотя dir находится не там, где chrome.exe, который программа все еще запускает, ключи реестра играют роль в этом?)

этот тоже работает

cd "FOO_DIR"
start FOO.exe

Однако это не

start "FOO_DIR\FOO.exe"

(открывает новое окно без запуска FOO.exe)

start /B "FOO_DIR\FOO.exe"

(снова пишет текст об авторских правах и больше ничего не делает)

(ОС Windows 7 x64)

2 ответа2

17
Start Chrome

Это работает, потому что исполняемый файл Chrome находится в папке, которая находится в переменной окружения PATH . start ищет программы во всех папках в этой переменной. Переменная среды PATHEXT содержит список расширений файлов, которые нужно искать, и, поскольку .exe по умолчанию содержится, вам не нужно писать chrome.exe .


start "FOO_DIR\FOO.exe"

Это не работает, потому что start будет использовать свой первый аргумент в качестве заголовка окна, если оно заключено в кавычки. Так что откроется новая CMD с названием "FOO_DIR\FOO.exe" .

Чтобы обойти это, вы можете просто добавить пустой аргумент title перед вашей командой:

start "" "FOO_DIR\FOO.exe"
5

Попробуйте добавить "title" или хотя бы "" после start вот так:

start "title" "FOO_DIR\FOO.exe"

или же

start "title" /B  "FOO_DIR\FOO.exe"

Основная причина проблемы заключается в том, что первый аргумент в кавычках "" интерпретируется как параметр title для нового окна cmd .

Также помогает взглянуть на справочник команд (ссылка)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .