PHP - 如何 运行 带有参数的批处理文件?
PHP - How to run a Batch File with parameters?
我正在为我的业务开发一个新门户。我必须为不同的 PC 名称启动许多批处理文件。所以我尝试 运行 我的批处理有一个参数..
$path = $db->givePath($service);
$path = $path . " " . "PCNAME";
if(exec("cmd /c" . $path)){
echo "Successful sent";
} else {
echo "Error";
}
但是如果我 运行 这个命令,什么也不会发生..
旧版本有效:
$path = $db->givePath($service);
if(exec("cmd /c" . $path)){
echo "Successful sent";
} else {
echo "Error";
}
有人可以帮助我吗?
你可以使用cmd shell:
system("cmd /c C:" . $path_to_file);
您在将 PCNAME 作为参数传递时可能会遇到问题,因为它包含需要转义的字符。您可以阅读有关 escapeshellarg 的更多信息 TL;DR 是否转义了任何会导致执行以意外方式退出的控制字符。在不使用 escapshellarg()
的情况下使用类似 UNC 路径的 PCNAME 会欺骗 windows 认为指定了另一个参数。
$path = $db->givePath($service);
$batchCmd = "C:\{$path} " . escapeshellarg('PCNAME');
if(exec("cmd /c {$batchCmd}")) {
echo 'Successfully sent';
} else {
echo 'Error';
}
我正在为我的业务开发一个新门户。我必须为不同的 PC 名称启动许多批处理文件。所以我尝试 运行 我的批处理有一个参数..
$path = $db->givePath($service);
$path = $path . " " . "PCNAME";
if(exec("cmd /c" . $path)){
echo "Successful sent";
} else {
echo "Error";
}
但是如果我 运行 这个命令,什么也不会发生.. 旧版本有效:
$path = $db->givePath($service);
if(exec("cmd /c" . $path)){
echo "Successful sent";
} else {
echo "Error";
}
有人可以帮助我吗?
你可以使用cmd shell:
system("cmd /c C:" . $path_to_file);
您在将 PCNAME 作为参数传递时可能会遇到问题,因为它包含需要转义的字符。您可以阅读有关 escapeshellarg 的更多信息 TL;DR 是否转义了任何会导致执行以意外方式退出的控制字符。在不使用 escapshellarg()
的情况下使用类似 UNC 路径的 PCNAME 会欺骗 windows 认为指定了另一个参数。
$path = $db->givePath($service);
$batchCmd = "C:\{$path} " . escapeshellarg('PCNAME');
if(exec("cmd /c {$batchCmd}")) {
echo 'Successfully sent';
} else {
echo 'Error';
}