2012-02-21 7 views
3

私は高低を検索しましたが、私が見つけたすべての提案やヒントは何らかの理由で動作しません。出力が既にリダイレクトされているバッチファイル内のコマンドから出力をリダイレクトしますか?

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スクリプトの出力をどのようにリダイレクトすることができますか?

あなたの時間と助けてくれてありがとう!

答えて

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

+0

+1出力のリダイレクトにも問題がありました。 'start app.exe param> log 2>&1'を実行します。あなたのソリューションは動作します、ありがとう! – psur

0

はBATCHで働いていたコードのサンプルです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^" 
関連する問題