Php与.bat和参数

时间:2016-01-20 22:22:44

标签: php mysql batch-file

我正在网上制作备份和恢复phpmyAdmin数据库(实际上只有一个数据库)我制作了两个.bat文件,用exec(file.bat)的php文件执行它们第一个拥有名称backup.bat,它包含以下代码:

Set Fecha=%Date:~0,2%%Date:~3,2%%Date:~6,4% Set Hora=%Time:~0,2%%Time:~3,2% mysqldump -u root --password="" dbceleues > C:\xampp\htdocs\SysWebCELEUES\BackUp\dbceleues%Fecha%%Hora%.sql 我有一些问题试图执行第二个文件“restore.bat”我上传dbceleues.sql与表单上的输入文件,我得到方法“发布”这:

$file=$_FILES['archivo']['tmp_name'];
$name=$_FILES['archivo']['name'];

然后我这样做:

chdir('C:\xampp\mysql\bin');
exec("restore.bat",$name);

或者这个:

chdir('C:\xampp\mysql\bin');
exec("restore.bat",$file);

我已使用此代码修改了第一个exec的文件:mysql -u root --password="" -B dbceleues < C:\xampp\htdocs\SysWebCELEUES\BackUp\%1%

,第二个文件包含:

mysql -u root --password=""  -B dbceleues < %1%

问题出现了,无论我做什么,参数都没有收到,只有我把这个位置静态像这样: C:\xampp\htdocs\SysWebCELEUES\BackUp\dbceleues200120161245.sql蝙蝠完美无缺! 因此,问题是尝试将参数发送到.bat文件 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

exec()没有将第二个参数传递给命令。请检查php manual for function exec

您应该这样称呼它:

exec("restore.bat $file");

甚至更好:

exec('restore.bat "' . $file . '"');

在批处理文件中,参数变量只在数字之前使用百分号,如下所示:

mysql -u root --password=""  -B dbceleues < %1