taskkill windows命令提示符不会杀死所有进程php

时间:2013-07-07 07:37:06

标签: php batch-processing taskkill

我正在运行Windows 7 64bit for WAMP 2服务器。

我正在使用batch scriptWindows Com Component运行我的程序,例如:

C:\wamp\bin\php\php5.3.13\php.exe C:\wamp\www\test\command.php
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run($command, 7, false);

现在,当我发现有多少"cmd.exe"程序在运行时,它会使用以下命令列出所有进程:

tasklist /svc /fi "imagename eq cmd.exe"

然后我使用php脚本使用以下命令杀死它们:

$output = shell_exec('taskkill /F /IM "cmd.exe"');

在这里,会发生什么,并非所有cmd.exe窗口都关闭。

上述代码中可能出现什么错误? Some windows are closed, while some remains open which is executing the command.

请帮忙。

1 个答案:

答案 0 :(得分:1)

找到解决方案[虽然可以提供更好的建议]

首先需要check and kill php tasks exists,然后是command prompt will kill

// It will first list out all `php.exe` tasks running
$output = shell_exec('tasklist /svc /fi "imagename eq php.exe"');
print_r($output);
echo "<br> ------------------------------------ <br>";

// It will first list out all `cmd.exe` tasks running
$output = shell_exec('tasklist /svc /fi "imagename eq cmd.exe"');
print_r($output);
echo "<br> ------------------------------------ <br>";

// kills php.exe tasks
$php_output = shell_exec('taskkill /F /IM "php.exe"');
print_r($output);
echo "<br> ------------------------------------ <br>";

// kills cmd.exe tasks
$cmd_output = shell_exec('taskkill /F /IM "cmd.exe"');
print_r($output);
echo "<br> ------------------------------------ <br>";

die(ucfirst('all tasks killed'));

希望对所有人都有帮助!