Как использовать знак амперсанда в событии сборки?

Я пытаюсь выяснить, как вызвать сценарий PowerShell с пробелами в имени файла как событие сборки Delphi.

Из CMD я должен позвонить powershell.exe -Command "& 'Filename With Spaces.ps1'" который отлично работает

Delphi, с другой стороны, удваивает знак амперсанда и пытается превратить команду в две команды.

Я попытался установить это как событие сборки:

powershell.exe -Command "& '$(PROJECTDIR)\Prebuild.ps1' $(PROJECTDIR)"

MSBuild выполняет:

powershell.exe -Command "&& 'D:\SVN\AccuLib 3.0\VCLUI\Prebuild.ps1' D:\SVN\AccuLib 3.0\VCLUI"

Так что же нужно, чтобы позвонить ps1 файл, содержащий пробелы из события сборки Delphi?

2 ответа

Решение

Вместо этого попробуйте параметр File, для него не требуется амперсанд:

powershell.exe -File "Filename With Spaces.ps1"

Чтобы использовать знак амперсанда, вы можете создать промежуточный cmd скрипт.

Событие сборки Delphi:

Prebuild.cmd "$(PROJECTDIR)"

Файл Prebuild.cmd:

powershell.exe -Command "& 'Filename With Spaces.ps1'"
Другие вопросы по тегам