2016-07-12 17 views
1

私は(私が思うには)興味深い質問があります。バッチスクリプトの非標準のファイル記述子

私は独自のコマンドラインユーティリティを使ってイーサネットデバイスをテスト/設定しています。

基本的には、コマンドプロンプトを開き、適切なディレクトリにethutilと入力し、JTAG経由でチップにアクセスします。

このユーティリティでは、適切なコマンドで埋められたテキストファイルだけである "スクリプト"を実行できます。これらは次のように実行されます。

-->run test_script.txt 

これは、フィードバックをスクリプトのすべてのコマンドに吐き出します。

type run test_script.txt | ethutil >nul 

nulちょうど私にすべての出力をSUPRESSすることがあります:私はレジスタの多くを自動化するに連れて行かれました

はそうは次のように/、バッチファイルとユーティリティに配管コマンドで読み込み、書き込み、バッチ読み出し。これは非常にうまく動作しますが、私はいつも、ファイルが見つからないというエラーが出ます:

The system cannot find the file specified. 
Error occurred while processing: run. 

test_script.txt 

前方に進む前に、私は内からスクリプトを実行する場合、このエラーが発生していないことに留意すべきですユーティリティ自体(バッチスクリプトなし)

は今、私はこのようなエラーをsurpressing試してみた:

type run test_script.txt | ethutil >nul 2>&1 

しかし、エラーがまだ現れ、それは明らかにstderrの一部ではありません。

また、nulをログファイルに置き換えると、エラーはログファイルに表示されません。

私の質問は、バッチスクリプトを実行すると、このエラーがなぜ表示されるのか理解する方法はありますか? stderrまたはstdoutの一部でない場合は、その部分は何ですか?それが何であるかを知ることさえ可能ですか?

ありがとうございます。

P.S.私は、これはおそらく独自のソフトウェアの単なる一種だと理解していますが、Windowsと何か関係があるかどうか尋ねると思いました。

答えて

3

typeechoではありません。

c:\> type /? 
displays the contents of a text file or text files 

runがテキストファイルではなく、(おそらく)ですのでtest_script.txtを読んで動作しますので、それは文句を言います。

エラーは "type"のstderrから来ているので、ethutilのstderrをリダイレクトすることはそれを抑制しません。 type run 2>nul | ethutilが本当に欲しかったのですが、runファイルがないので、正しく動作していない/あなたが期待したことをやっていて、修正する必要があります。

+0

私は確かにそれを考えなかった。解明してくれてありがとう! – detroitwilly

+1

問題を診断しても問題ありません。しかし、解決策は簡単です: 'echo run test_script.txt | ethutil> nul'または 'test_scriptをタイプしてください。txt |エチュール>ヌル – dbenham

関連する問題