假设我有一个
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