2012-02-21 71 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^"