Это намного более простая реализация моих реальных пакетных файлов, но они служат для иллюстрации моей проблемы ...
У меня есть один пакетный файл, 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>