【问题标题】:Run cmd bat file in PHP在 PHP 中运行 cmd bat 文件
【发布时间】:2018-04-27 19:37:00
【问题描述】:

我正在尝试在 Windows 上的 WAMP 服务器中从 PHP 运行 .bat 文件。下面是我的代码,第一个“if”语句运行并将“成功”打印到屏幕上。因此,函数“exec”正在运行,但没有复制任何文件。请提供任何帮助或建议。

// Function run bat file
private function run_bat(){

    $path = 'wamp\www\application\common\get_file.bat';
    $batchCmd = "C:\\".$path;
    echo "<br>".$batchCmd;
    //if(exec('cmd /c '.$batchCmd)){
    if(exec($batchCmd)){
        echo '<br>Successful';
        return TRUE;
    } else {
        echo '<br>Error in run bat';
        return FALSE;
    }
} // end function run bat file 

我的 bat 文件只是将一个文件复制到一个新文件夹中。另一个文件位于网络驱动器上。

【问题讨论】:

  • my bat file just copies one file to a new folder. PHP 也可以使用复制功能做到这一点。
  • @ManuelMannhardt 有时,一个简单的命令只是为了测试目的而最小化其他问题,它确实有助于了解基础机制是如何工作的。 PHP 调用 Windows 批处理文件成功并不像你想象的那么简单。

标签: php batch-file codeigniter-3


【解决方案1】:

你应该这样运行它

system("cmd /c C: path_to_your_file");

你的情况

system("cmd /c  $batchCmd ");

或者去

exec("c:\WINDOWS\system32\cmd.exe /c START  $batchCmd" );

【讨论】:

  • 使用 "exec("c:\WINDOWS\system32\cmd.exe /c START $batchCmd" )" 窗口只会显示“等待本地主机”并且永远不会回来。
  • 你试过用简单的引号 exec('c:\WINDOWS\system32\cmd.exe /c START $batchCmd')
  • 让我问一个愚蠢的问题,你的 bat 文件是否可以在没有 php 的情况下工作?
  • 是的,它在没有 PHP 的情况下运行,简单的引号它只是运行并运行“等待本地主机”
  • 我建议在数据库连接配置中将您的服务器名称从 localhost 更改为 127.0.0.1。这似乎是一个众所周知的问题。希望它会有所帮助
【解决方案2】:

要运行 bat 脚本,您应该使用 cmd /c filename。所以你必须把代码改成这样

$batchCmd = "cmd /c C:\\" . $path;

【讨论】:

  • with "$batchCmd = "cmd /c C:\\" . $path;"我得到的都是一样的,成功但没有复制文件。 bat需要和php脚本在同一个文件夹吗?
猜你喜欢
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 2010-10-24
相关资源
最近更新 更多