Использование "%~dp0" с аргументами командной строки не работает

Создается сценарий развертывания для программного обеспечения, для которого требуется установить распространяемый Visual C++ 2013 в автоматическом режиме из движущегося источника (иначе, папка может находиться на ключе, на сервере, локально и т. Д.) В качестве администратора.

Для всех других моих исполняемых файлов (в основном MSI) использование "%~dp0" перед именем файла (например, "%~dp0Antidote9.msi", за которым следуют такие аргументы, как /quiet, /q и т. Д.), Работает нормально.

Но для VC Redist он не принимает мои аргументы.

Вот моя полная команда:

start /wait "%~dp0vcredist_x64.exe" /install /quiet /norestart

Он отлично тянет файл, но затем говорит, что мои аргументы недействительны, хотя если я удаляю% ~ dp0, он работает нормально, и я получил аргументы от выполнения vcredist_x64.exe /?.

Есть ли что-то, что я делаю неправильно или что мне нужно изменить, чтобы мои аргументы работали?

Заранее спасибо!

1 ответ

Вы могли бы использовать %CD%\ который обозначает Текущий каталог вместо %~dp0,

Я не заметил никакой разницы между этими двумя.

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

start /wait "" "%CD%\MyProgram.exe /link \"MyOtherDLL.dll\""
Другие вопросы по тегам