batch-file – 如何并行运行许多PHP脚本并将每个脚本的输出重定向到文件?

假设我有一个
PHP脚本,它从命令行获取两个参数,并将它们作为输出打印出来.

我想要一个批处理文件,它运行许多与不同参数并行的PHP脚本,并将每个脚本的输出重定向到不同的文件.

我试过类似的东西

start "" php index.php 1 2 >> tmp1.txt
start "" php index.php 3 4 >> tmp2.txt

它将它们并行运行,并将它们的输出打印到控制台窗口中.但我想将每个输出重定向到一个文件.

在批处理文件中修改什么来获取index.php的输出重定向到文件?

最佳答案 微软关于
using command redirection operators的文章解释了使用>的不同之处.或>>或者.

以下行有什么问题?

start "" php index.php 1 2 >>tmp1.txt

此行导致将命令start的输出附加到文件tmp1.txt,这在此处不需要.

解决办法是什么?

命令处理器不再通过使用^转义尖括号来解释命令处理器的重定向操作符,但是对于在新命令进程中启动的php.exe.

start "" php.exe index.php 1 2 ^>^>tmp1.txt
start "" php.exe index.php 3 4 ^>^>tmp2.txt

上面两行的缺点是,在php.exe完成处理脚本文件index.php之后,为每个新进程打开的每个控制台窗口都保持打开状态.

解决方案是使用Aacini已提供的代码,启动一个带有选项/ C的新命令进程,以便在php.exe终止后自动关闭命令进程及其控制台窗口.

start "" cmd.exe /C php.exe index.php 1 2 ^>^>tmp1.txt
start "" cmd.exe /C php.exe index.php 3 4 ^>^>tmp2.txt

还可以在应用程序的左侧指定重定向,该输出被重定向并附加到指定的文件.

start "" cmd.exe /C ^>^>tmp1.txt php.exe index.php 1 2
start "" cmd.exe /C ^>^>tmp2.txt php.exe index.php 3 4
点赞