Почему использование QUOTE в командной строке Windows дает ошибку? - PullRequest
0 голосов
/ 19 октября 2018

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

У меня есть один пакетный файл, b.cmd, который просто повторяет входной аргумент:

REM - *** B.CMD
@echo off

echo %1
echo %~1

У меня есть другой пакетный файл a.cmd, который запускается b.cmd:

REM - *** A.CMD
@echo off

set Location=C:\Users\yogi\AppData\Local\Temp\test
REM - This location could contain spaces, hence on the next line
REM - I am surrounding %Location%\b.cmd with QUOTEs.
start "" "%Location%\b.cmd" "Input Argument 1"

Если я выполняю a.cmd, я получаю ошибку:

'C:\Users\yogi\AppData\Local\Temp\test\b.cmd"  "Input' is not recognized as an internal or external command,
operable program or batch file.

Однако, если я удаляю ЦИТАТЫ вокруг% Location% \ b.cmd из a.cmd, я получаю (как я и ожидал):

"Input Argument 1"
Input Argument 1

Что я делаю не так?Мне нужны цитаты вокруг% Location% \ b.cmd, а также входной аргумент, потому что оба они могут содержать пробелы.

Отредактировано

Вот вывод из a.cmd, Эхо включено и b.cmd называется БЕЗ ЦИТАТ вокруг него :

C:\Users\yogi\AppData\Local\Temp\test>a.cmd

C:\Users\yogi\AppData\Local\Temp\test>set Location=C:\Users\yogi\AppData\Local\Temp\test

C:\Users\yogi\AppData\Local\Temp\test>start "" C:\Users\yogi\AppData\Local\Temp\test\b.cmd "Input Argument 1"

C:\Users\yogi\AppData\Local\Temp\test>

Вот вывод из b.cmd:

C:\Users\yogi\AppData\Local\Temp\test>echo "Input Argument 1"
"Input Argument 1"

C:\Users\yogi\AppData\Local\Temp\test>echo Input Argument 1
Input Argument 1

C:\Users\yogi\AppData\Local\Temp\test>

Вот вывод из a.cmd. Эхо включено и b.cmd вызывается с кавычками вокруг него :

C:\Users\yogi\AppData\Local\Temp\test>a.cmd

C:\Users\yogi\AppData\Local\Temp\test>set Location=C:\Users\yogi\AppData\Local\Temp\test

C:\Users\yogi\AppData\Local\Temp\test>start "" "C:\Users\yogi\AppData\Local\Temp\test\b.cmd" "Input Argument 1"

C:\Users\yogi\AppData\Local\Temp\test>

Вот вывод из b.cmd:

'C:\Users\yogi\AppData\Local\Temp\test\b.cmd"  "Input' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\yogi\AppData\Local\Temp\test>

1 Ответ

0 голосов
/ 19 октября 2018

Это работает на моем конце.

start cmd /C ""%Location%\b.bat" "Input Argument 1""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...