1

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

我正在batch script使用Windows Com Componentfor ex 运行我的程序:

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.

请帮忙。

4

1 回答 1

1

找到了一个解决方案[尽管开放以获得更好的建议]

首先需要check and killif 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'));

希望对大家有帮助!

于 2013-07-22T09:20:52.547 回答