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';
}