我需要从PHP运行.bat脚本。 .bat脚本需要包含PHP变量的文件名。我将如何在PHP中执行此操作?
谢谢!
答案 0 :(得分:1)
使用fopen()
,fwrite()
和fclose()
创建.bat文件,然后使用shell_exec()
执行该文件。见这里:
fopen:http://us3.php.net/manual/en/function.fopen.php
fwrite:http://us3.php.net/manual/en/function.fwrite.php
fclose:http://us3.php.net/manual/en/function.fclose.php
shell_exec:http://php.net/manual/en/function.shell-exec.php
=============================================== ==================================
编辑:
或者,如果它总是传递相同数量的php变量并且它们是标量,那么您可以创建一个接受命令行参数的.bat文件,然后传递shell_exec
中的标量变量。
答案 1 :(得分:0)
将变量从一种编程语言传递给另一种编程语言?在指定的语言支持参数之前,如果有一些(并且有),则使用它(通过参数传递变量)
答案 2 :(得分:0)
如果您的bat文件只是获取文件名和一些基本参数,那么您只需填写适当参数的shell_exec()。
批处理文件命令行参数被引用为%1%2等,如果您的批处理文件是foo.bat并且它包含:
notepad.exe %1
您可以从命令行调用foo.bat textfile.txt
。
要从php运行它,您将命令行构造为字符串,然后使用它调用shell_exec
答案 3 :(得分:0)
要扩展Jonathan的答案,您不必使用PHP执行批处理文件。您也可以仅使用PHP生成配置批处理文件。然后,您可以在批处理文件中调用它以访问所需的所有变量。这非常灵活,将变量保存在单独的批处理文件中可保持您的主代码整洁。
为说明起见,您将需要三个文件:
batch.bat
您的主要批处理文件setup.php
配置生成器config.bat
配置批处理文件(由setup.php
创建)首先,我们将创建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
接下来,在批处理文件中添加以下两行(您必须确保可以在PATH系统变量中访问php可执行文件):
:: 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
)