PHP: несколько команд shell_exec

Поэтому я пытаюсь создать список измененных файлов между двумя командами git:

shell_exec(" git diff --name-only $remoteCommitId $localCommitId > diff && SET /p DIFF=<diff && git archive --output=$zipName HEAD %DIFF% "); 

Однако никакого zip-файла не создано. Я также попытался выделить команды с помощью & и ; , Если запускать эти команды в пакетном файле, все работает.

Я на окнах и причина, почему я делаю так, что здесь .

Я просто хочу создать zip-файл между двумя git- shell_exec через shell_exec поэтому любой другой метод, который работает через shell_exec , также приветствуется.

Обновить

Если я запускаю эти команды непосредственно на консоли:

 git diff --name-only 207b606c270fc14a7161647c2fbe8f9a7d8e05a1 17dcc2233678df4ce86c8713e0349d68e45c3c96 > diff&& SET /p DIFF=<diff&& git archive --output=deployment.zip HEAD %DIFF% 

Он создает файл deployment.zip, но проблема в том, что файл deployment.zip содержит только один файл корневого пути в нем не из другой папки (в данном случае поставщик):

Вот файл diff:

 composer.json vendor/anlutro/l4-settings/.gitignore vendor/anlutro/l4-settings/.travis.yml vendor/anlutro/l4-settings/CONTRIBUTING.md vendor/anlutro/l4-settings/LICENSE vendor/anlutro/l4-settings/README.md vendor/anlutro/l4-settings/composer.json vendor/anlutro/l4-settings/phpunit.xml vendor/anlutro/l4-settings/src/ArrayUtil.php vendor/anlutro/l4-settings/src/DatabaseSettingStore.php vendor/anlutro/l4-settings/src/Facade.php vendor/anlutro/l4-settings/src/JsonSettingStore.php vendor/anlutro/l4-settings/src/MemorySettingStore.php 

Но файл deployment.zip содержит только файл composer.json .

Попробуйте вместо этого:

  shell_exec("cmd /C \"ascript.bat\""); 

с ascript.bat скрипт, который перечисляет все необходимые команды.
См. « Как не открывать окно Cmd при запуске пакетного файла »