Як створити пакетний файл у Windows, використовуючи “старт” із шляхом та командою з пробілами


78

Мені потрібно створити пакетний файл, який запускає кілька консольних програм у файлі .cmd Windows. Це можна зробити за допомогою команди start.

Однак у команді є шлях. Мені також потрібно пройти параметристів, які також мають пробіли. Як це зробити?

Наприклад, пакетний файл

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

Відповіді:


165

Насправді його приклад не спрацює (хоча спочатку я думав, що він теж буде). На основі довідки для команди «Пуск» перший параметр - це ім’я новоствореного вікна командного рядка, а другий та третій мають бути відповідно до шляху до програми та її параметрів. Якщо ви додасте ще "" до шляху до програми, це має спрацювати (принаймні для мене). Використовуйте щось подібне:

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

Ви можете змінити перший аргумент таким, яким ви хочете, щоб назва нової командного рядка була. Якщо створена програма для Windows, тоді командний рядок не відображатиметься, а заголовок не матиме значення.


Здається, заголовок вікна є обов’язковим, хоча в Інтернеті є багато документації, в якій зазначено інше. Ігноруйте цю документацію. Дотримуйтесь пропозиції Енді.
Корін

Якщо я вводжу команду програми Windows із інтерактиву, програма запускається у фоновому режимі, і я бачу нову підказку. Якщо я запускаю ту саму команду із пакетного сценарію, програма запускається на передньому плані; мій пакетний сценарій зупиняється, поки я не вийду з програми. Ік! Я довго намагався запустити старт, щоб запустити програму у фоновому режимі, але start /B "app"не працював, і start cmd /C "app"дав мені сторонній пульт. Дякую!! Нарешті я дізнався, що мені потрібен заголовок вікна для мого запуску поза вікном. Це працює: start /B "" "app"
Кіт Робертсон,

Дякую! Справа актуальна навіть із /waitзазначеним параметром! start /wait "%CDir%\cron.exe" -q -removeне працює, поки start "" /wait "%CDir%\cron.exe" -q -removeпрацює.
Пт0sT

Якби я знайшов вашу відповідь пізніше, це могло б мені врятувати день ((. Але в будь-якому разі, дякую!
Денис Петров,

15

Втеча із шляху з апострофами правильна, але команда start бере параметр, що містить заголовок нового вікна. Цей параметр визначається оточуючими апострофами, тому ваша програма не виконується.

Спробуйте щось подібне:

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

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

Коли я використав вищезазначену пропозицію, у мене є:

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

Я думаю, що другий знак лапки запобігає запуску команди. Після деяких пошукових рішень, збережіть мій день:

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

Створіть порожній файл test 2.bat, а потім створіть файл test1.batіз цим: START "Test title" "test 2.bat" %*- тепер запустіть, test1.bat "param 1"і він не буде працювати, чому?
ale5000

1

Цікаво, здається, що в Windows Embedded Compact 7 ви не можете вказати рядок заголовка. Першим параметром повинна бути команда або програма.


0

Ви повинні використовувати щось подібне:

start / d C: \ Windows \ System32 \ calc.exe

start / d "C: \ Program Files \ Mozilla

Firefox "firefox.exe start / d

"C: \ Програмні файли \ Microsoft

Office \ Office12 "EXCEL.EXE

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


-1

Оточення шляху та аргументу пробілами всередині лапок, як це має бути у вашому прикладі. Команді може знадобитися обробляти лапки, коли до неї передаються параметри, але це, як правило, не становить великої праці.


-1

Я успішно досліджував, і це у мене прекрасно працює. Моя вимога - надіслати електронний лист за допомогою vbscript, який потрібно викликати з командного файлу у Windows. Ось точна команда, яку я використовую без помилок.

START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"

Це неправильно. Ви можете писати START "" "C:\Documents and Settings\akapoor\Desktop\Mail.vbs". Ваш код працює лише тому, що vbs - це розширення, яке вирішується, коли ви його "запускаєте". Спробуйте зателефонувати notepad.exe із шляхом, він не буде працювати. Він завжди виконуватиме сценарій.
Самуель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.