Двойные кавычки в строке запуска Windows Batch-скрипта - PullRequest
2 голосов
/ 12 февраля 2010

Я посмотрел на уже предоставленные ответы, но я все еще застрял. Вот что у меня сейчас есть:

 start "" "C:\Program Files (x86)\Spark\Spark.exe"
 echo Spark started

Это отлично работает. Но теперь я хочу передать параметры клиенту, которые должны быть заключены в кавычки. Я могу сделать следующее в командной строке:

 "C:\Program Files (x86)\Spark\Spark.exe" "user=%USERNAME%&server=example.org"

И запускается с заполненными полями пользователя и сервера.

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

Так, как бы я добавил в начало строки параметр, заключенный в кавычки?

Обновление:

Я случайно заставил его работать, но не смог воспроизвести его. Но это не сработало точно. Имя пользователя оставалось пустым, но сервер был заполнен. Я забыл упомянуть, что я использую переменную среды для имени пользователя: %USERNAME%

Так что, возможно, моя проблема в том, что я не могу экранировать кавычки и использовать переменные окружения?

Окончательный ответ:

Оказывается, часть проблемы заключалась в том, что я использовал неправильный параметр, но изначально я использовал правильный параметр, поэтому я не заметил. Из командной строки у меня должно быть:

 "C:\Program Files (x86)\Spark\Spark.exe" "username=%USERNAME%&server=example.org"

и так из командного файла работает следующее:

 start "" "C:\Program Files (x86)\Spark\Spark.exe" "username=%USERNAME%&server=example.org"
 echo Spark started

Большое спасибо и указывает dcp за то, что я получил правильный ответ.

1 Ответ

1 голос
/ 12 февраля 2010

Вы пробовали это?

"C:\Program Files (x86)\Spark\Spark.exe" "\"user=foo&server=example.org\""

Это сработало, когда я попробовал простой тест командной строки и программу на c ++ (я мог видеть кавычки, когда выводил аргумент argv [1]).

UPDATE: Если в% USERNAME% есть пробелы, вы должны заключить его в кавычки (см. Ниже) Я думаю, что вы можете удалить другие цитаты.

"C:\Program Files (x86)\Spark\Spark.exe" user="%USERNAME%"&server=example.org
...