Как создать командный файл в Windows, используя начало с пути и команду с пробелами

Мне нужно создать командный файл, который запускает несколько консольных приложений в файле Windows .cmd. Это можно сделать с помощью команды запуска.

Однако в команде есть путь. Мне также нужно передать параметры, в которых также есть пробелы. Как это сделать?

Например. командный файл

start "c:\path with spaces\app.exe" param1 "param with spaces"

person Community    schedule 16.09.2008    source источник


Ответы (7)


Собственно, его пример не сработает (хотя сначала я думал, что тоже будет). Основываясь на справке для команды «Пуск», первый параметр - это имя только что созданного окна командной строки, а второй и третий должны быть путем к приложению и его параметрам соответственно. Если вы добавите еще один "" перед путем к приложению, оно должно работать (по крайней мере, для меня). Используйте что-то вроде этого:

start "" "c:\path with spaces\app.exe" param1 "param with spaces"

Вы можете изменить первый аргумент на любое название новой командной строки. Если создается приложение для Windows, командная строка не отображается, и заголовок не имеет значения.

person Andy    schedule 16.09.2008
comment
Кажется, что заголовок окна является обязательным, хотя в Интернете есть много документации, в которой говорится об обратном. Игнорируйте эту документацию. Следуйте совету Энди. - person Corin; 22.08.2011
comment
Если я ввожу команду приложения Windows из интерактивного режима, приложение запускается в фоновом режиме, и я вижу новое приглашение. Если я запускаю ту же команду из пакетного сценария, приложение запускается на переднем плане; мой пакетный скрипт останавливается, пока я не выйду из приложения. Ура! Я долгое время пытался использовать start для запуска моего приложения в фоновом режиме, но start /B "app" не работал, а start cmd /C "app" выдает мне постороннюю консоль. Спасибо!! Я наконец узнал, что мне нужен заголовок окна для запуска без окна. Это работает: start /B "" "app" - person Keith Robertson; 17.01.2013
comment
Спасибо! Случай актуален даже с указанным параметром /wait! start /wait "%CDir%\cron.exe" -q -remove не работает, а start "" /wait "%CDir%\cron.exe" -q -remove работает. - person Fr0sT; 16.01.2015
comment
Если бы я нашел ваш ответ позже, это могло бы спасти мой день ((. Но в любом случае, спасибо! - person Denis Petrov; 23.10.2018

Экранирование пути с помощью апострофов является правильным, но команда запуска принимает параметр, содержащий заголовок нового окна. Этот параметр определяется окружающими апострофами, поэтому ваше приложение не выполняется.

Попробуйте что-то вроде этого:

start "Dummy Title" "c:\path with spaces\app.exe" param1 "param with spaces"
person Steffen    schedule 16.09.2008

start "" "c:\path with spaces\app.exe" "C:\path parameter\param.exe"

Когда я использовал указанное выше предложение, у меня было:

'c: \ path' не распознается внутренней или внешней командой, работающей программой или командным файлом.

Я думаю, что второй знак qoutation препятствует запуску команды. После некоторого поиска ниже решения спасти мой день:

start "" CALL "c:\path with spaces\app.exe" "C:\path parameter\param.exe"
person Mustafa Kemal    schedule 18.04.2017
comment
Создайте пустой файл test 2.bat, затем создайте файл test1.bat со следующим: START "Test title" "test 2.bat" %* - теперь запустите test1.bat "param 1", и это не сработает, почему? - person ale5000; 27.08.2020

Интересно, что в Windows Embedded Compact 7 невозможно указать строку заголовка. Первым параметром должна быть команда или программа.

person Mark Agate    schedule 15.08.2012

Вы должны использовать что-то вроде этого:

запуск / д C: \ Windows \ System32 \ calc.exe

начало / д C: \ Program Files \ Mozilla

Firefox firefox.exe start / d

C: \ Program Files \ Microsoft

Офис \ Office12 EXCEL.EXE

Также советую использовать специальный редактор командных файлов - Dr.Batcher

person user243871    schedule 05.01.2010

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

person Curro    schedule 16.09.2008

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

START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"
person Anupam Kapoor    schedule 11.10.2013
comment
Это не правильно. Можно написать START "" "C:\Documents and Settings\akapoor\Desktop\Mail.vbs". Ваш код работает только потому, что vbs - это расширение, которое разрешается при его запуске. Попробуйте вызвать notepad.exe с указанием пути, это не сработает. Он всегда будет выполнять сценарий. - person Samuel; 24.03.2015