2

一連の scala スクリプトを実行する Powershell スクリプトを作成しています (ビルド ツールを使用しない理由があります)。これらすべてのコンパイルの出力を次のように生成したいと思います。

  1. ファイル内のコンパイル エラーのみ
  2. 2 番目のファイルに結合されたコンパイル エラーと標準出力
  3. 標準出力とコンパイル エラーも標準出力に出力されます

私はtee2>>を試し、さらに-OutVariable-ErrorVariableを突き刺しました (後者の 2 つはネイティブの Powershell コマンドでのみ機能するようです?)。ティーとリダイレクトはいくつかの組み合わせで正しいアプローチだと思いますが、かなりの検索を行った後、適切なフォーラムが見つからないようです。

エラーをリダイレクトするだけの現在のメインループは次のとおりです。

foreach($script in $scripts) {
    Write-Host scala $script
    scala -nocompdaemon $script 2>> _testerrors.txt
}

最初の行は、プロセスを見ている人が何かが起こっていることを確認できるようにするためのものです (適切なティーイング/リダイレクトなどにより、副作用としてこれが解消されるようです)。

ヘルプ/ポインタをありがとう; 私は Powershell のカジュアルなユーザーです。

アップデート:

さらに探し回った結果、次の結果が得られました。

foreach($script in $scripts) {
    Write-Host scala $script
    Write-Output "> scala $script" | Out-File ./_testoutput.txt -append
    scala -nocompdaemon $script 2>&1 | tee -Variable testout
    out-file ./_testoutput.txt -InputObject $testout -append
    Write-Output "--------------------" | Out-File ./_testoutput.txt -append
}

teeコマンドはテキストをファイルに送信できることがわかりましたが、何らかの奇妙な理由でファイルに追加できません。したがって、出力を変数にキャプチャしてから、変数をファイルに追加する必要があります。

この結果によって問題の一部は解決されますが、それでもエラー メッセージのみを含むファイルは生成されません。

4

2 に答える 2

0

あなたはそのようにこれを行うことができます:

$Error.Clear()
scala -nocompdaemon $script 2>&1 | Tee -FilePath output.txt -Append
$Error >> errors.txt

最初にグローバルコレクションをクリアする$Errorと、ループが実行されるときに、scalaコマンドによって生成されたエラーのみが含まれるはずです。

于 2012-09-17T17:25:45.910 に答える
0

Start/Stop-Transcript http://technet.microsoft.com/en-us/magazine/ff687007.aspxを試してみ てください: http://blogs.msdn.com/b/powershell/archive/2010/01/04/workaround-for-start-transcript-on-native-processes.aspx

于 2012-09-18T06:45:30.987 に答える