2012-02-21 168 views
3

我搜索了高和低,但我发现所有的建议和提示不起作用的原因。我有一个是被调用为这样一个批处理文件:重定向输出已重定向的批处理文件中命令的输出?

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

这伟大工程:automation.log被加载的所有输出和错误的特定批处理文件。然而,批处理脚本中,我有以下命令:

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脚本的输出?

感谢您的时间和帮助!

回答

5

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

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

,或者,如果你想在updateDB.log错误信息,

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

谢谢你的优雅解决方案! – ariestav 2012-02-22 21:30:52

+0

+1我也有重定向输出的问题,例如'启动app.exe参数> log 2>&1'。您的解决方案有效,谢谢! – psur 2012-03-21 14:28:19

0

下面是在一个批处理工作的代码示例文件使用START命令启动VBScript。它将启动单独的进程并将结果放入指定的日志文件中。

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^"