Чтобы избежать головной боли в кавычках, рассмотрите (временно) установку переменной среды из PowerShell, а затем вызовите пакетный файл напрямую:
$env:ENV_BASE_DIR = 'C:\Program Files\XY\Z 12.3'
C:\Users\Admin\Desktop\file.bat /d /p
$env:ENV_BASE_DIR = $null # remove the env. var again.
Если вы хотите решить эту проблему с помощью cmd.exe
однострочный:
cmd.exe /c set ENV_BASE_DIR='C:\Program Files\XY\Z 12.3' `& C:\Users\Admin\Desktop\file.bat /d /p
Метасимвол &
более просто экранируется с помощью `
(обратный удар), escape-символа PowerShell.
Путь к пакетному файлу и его аргументы передаются как отдельные аргументы.
Что касается того, что вы пытались:
В конечном счете, единственная проблема с вашей командой строка заключалась в том, что вы помещали двойные кавычки вокруг C:\Users\Admin\Desktop\file.bat /d /p
в целом , в результате чего cmd.exe
рассматривал всю строку как путь к исполняемому файлу.