(исправленный ответ)
Во-первых, если вы запускаете .exe-файлы в пакете, то безопаснее использовать префикс «call».Иногда это необходимо для гарантии того, что пакет ожидает завершения.
Использование «start» - это еще одна возможность, но для этого простого варианта использования нет необходимости.
Вы пишете, что команды не выполнено.Итак, очевидно, у вас есть другая проблема, а не «не ждет .., чтобы завершить» проблему.Взгляните на ваш недавно приведенный пример, это тот случай.В режиме администратора вы должны указать полный путь.С моей маленькой уловкой ниже ("% ~ dp0", включая уже обратную косую черту), вы все еще можете использовать текущий каталог в пакетных файлах.
В большинстве случаев, если такая проблема возникает с правами администратора, это проблемапуть к текущему каталогу.Пакетный файл с правами администратора не использует его так же, как мы привыкли, он не запускается в своем собственном каталоге (но в основном в System32).Не полагаться на компакт-диск - это важный вопрос написания пуленепробиваемых пакетных файлов.
Хороший пример пакета, объединяющий здесь другие ответы и решающий ряд возможных проблем в вашем случае:
call msiexec /i "%~dp0MySetup.msi" /qb /L*v "%~dp0MySetup.log"
echo Returncode: %ERRORLEVEL%
pause
Он правильно использует текущий каталог и предполагает наличие командной строки установки, включающей файл журнала (работает только, если у вас есть права на запись в текущий каталог, если не указан путь к файлу журнала с доступом для записи, например "% TEMP% \"MySetup.log ".
Внимание: не забудьте по-настоящему запустить командный файл с правами администратора (правое меню мыши или открытие командной оболочки администратора до:)