重定向批处理文件中已重定向输出的命令的输出


Redirect output from a command within a batch file whose output is already redirected?

我搜索了很多,但由于某些原因,我找到的所有建议和提示都不起作用。我有一个正在被调用的批处理文件:

cmd /C "automateMyProgram.bat >> automation.log 2>>&1"

这非常有效:automation.log加载了该特定批处理文件的所有stdout和stderr。但是,在该批处理脚本中,我有以下命令:

start php updateDB.php param1 param2 ^> updateDB.log

php脚本执行得很好,读取参数也很好,但从未创建updateDB.log。我确保php.ini文件中的php错误报告设置为将错误输出到命令行界面。php脚本中有几个echo语句,我需要将它们记录到日志中,但由于某种原因,它们没有被输出。我读到,如果使用start命令调用程序,则必须使用插入符号运算符重定向输出,因为程序是在新进程中启动的。我也试过:

start php updateDB.php param1 param2 >> updateDB.log

但这也没用。所以我尝试了:

start /B "Database Update" "php" "param1" "param2" >> updateDB.log

这在批处理文件中不起作用,但当我将其直接复制并粘贴到桌面上的cmd窗口中时,它起了作用。

你们中的任何人可能知道我如何重定向从批处理文件调用的php脚本的输出吗?

感谢您的时间和帮助!

这可能是最简单的解决方案:

start cmd /c "php updateDB.php param1 param2 > updateDB.log"

或者,如果要在updateDB.log中包含错误消息,则

start cmd /c "php updateDB.php param1 param2 > updateDB.log 2>&1"

以下是在BATCH文件中使用START命令启动VBScripts的代码示例。它将启动单独的过程,并将结果放入指定的日志文件中。

rem **Setting the passed device to run against to a varible**
SET Audit_Device=%1
rem     **Launching "_SomeScript.vbs" in a seperate window**
start "WindowTitle" /d%~dp0  cmd /C cscript.exe ^"%~dp0_SomeScript.vbs^" %Audit_Device% ^>^"%~dp0%Audit_Device%_SomeScriptLogFile.txt^"
rem       **Launching "ListPermissionsForAllShares-Basic-and-Detailed.vbs" in a seperate window**
start "List Share Permission" /d%~dp0  cmd /C cscript.exe ^"%~dp0ListPermissionsForAllShares-Basic-and-Detailed.vbs^" %Audit_Device% ^>^"%~dp0%Audit_Device%_Share_Permissions.txt^"