Чтобы расширить ответ Джонатана, вам не нужно выполнять командный файл с PHP.Вы также можете использовать PHP только для создания командного файла конфигурации.Затем вы можете вызвать это в своем пакетном файле, чтобы получить доступ ко всем необходимым переменным.Это очень гибко, и хранение переменных в отдельном пакетном файле сохраняет ваш основной код в чистоте.
Для иллюстрации вам понадобятся три файла:
batch.bat
Ваш основной пакетфайл setup.php
Генератор конфигурации config.bat
Пакетный файл конфигурации (созданный setup.php
)
Генератор конфигурации
* 1018Прежде всего, мы создадим скрипт
setup.php
, который генерирует файл
config.bat
.Это может выглядеть так:
// Create a list of all variable names we want
// to use in the bat file, with their values.
// Note that these can come from anywhere - from
// a database, other files, remote API calls, etc.
$batVariables = array(
'InfoFile' => 'info.txt',
'TrackListing' => 'tracklist.txt',
'AuthorBio' => 'author.txt',
'MainTrack' => 'audio.mp3'
);
// create the code for the configuration
// batch file.
$batCode =
'@echo off'.PHP_EOL.
':: AUTOMATICALLY GENERATED FILE, DO NOT EDIT'.PHP_EOL.
PHP_EOL;
// add all variables
foreach($batVariables as $varName => $value)
{
$batCode .= 'set '.$varName.'='.$value.PHP_EOL;
}
// save the configuration file
file_put_contents('config.bat', $batCode);
Это создаст командный файл, который выглядит следующим образом:
@echo off
:: AUTOMATICALLY GENERATED FILE, DO NOT EDIT
set InfoFile=info.txt
set TrackListing=tracklist.txt
set AuthorBio=author.txt
set MainTrack=audio.mp3
Загрузить конфигурацию
Далее, добавьте эти две строкив вашем пакетном файле (вы должны будете убедиться, что исполняемый файл php доступен в вашей системной переменной PATH):
:: Generate the configuration batch file
php setup.php
:: Load the configuration with all variables
call config.bat
При каждом использовании основного пакетного файла будет создаваться новая конфигурация.
При загрузке config.bat
с помощью команды call
переменные будут доступны непосредственно в области действия основного пакетного файла.Это означает, что вы можете начать использовать их как обычно, например, так:
echo Using the information file %InfoFile%.
Помимо этого, вы можете добавить несколько проверок ошибок в случае, если файл конфигурации не может быть сгенерирован.Один простой способ - убедиться, что файл существует:
IF EXIST "config.bat" (
call "config.bat"
) ELSE (
echo The configuration file does not exist.
echo.
pause
exit
)