0

次のコマンドを使用して、DEV ブランチを TEST ブランチにマージするバッチ スクリプトを作成しました。

tf merge $/Proj/Dev $/Proj/Test /recursive >nul

このコマンドは、常に次の出力をトリガーします。

TF401190: The local workspace [workspace];[name] has 110500 items in it, which exceeds the recommended limit of 100000 items. 
To improve performance, either reduce the number of items in the workspace, or convert the workspace to a server workspace.

次のようにコマンドの最後に「2>&1」を追加することで、すべてのエラー/出力を回避できることがわかっています。

tf merge $/Proj/Dev $/Proj/Test /recursive >nul 2>&1

理想的には、特に TF401190 エラーを無視/抑制したいと思います。印刷を許可する前に特定のトークン/文字列の出力をチェックすることを意味するとしても、これを行う方法が必要だと思います。私はまだコマンドラインとバッチ スクリプトを使い始めたばかりです。どんな助けでも大歓迎です!ありがとう。

注:エラー自体の解決策に取り組むことには興味がありません。この質問は、特定のエラーを抑制する方法にのみ関係しています。

4

2 に答える 2

1

bash シェルでは、次のような特定のエラーを除外できます。

ls /nothere

ls: cannot access /nothere: No such file or directory

その特定のエラー メッセージを抑制するには:

ls /nothere 2>&1 | grep -v 'No such file'

(エラーメッセージは抑制されます)

他のエラー メッセージが表示されるかどうかを確認します。

ls /root 2>&1 | grep -v 'No such file'
ls: cannot open directory /root: Permission denied

(他のエラー メッセージは正常に表示されます)

于 2015-07-09T18:47:22.780 に答える
0

この質問に対する答えは、他のプログラムにパイプできるように、stderr のみを stdout にリダイレクトする (2 つを結合しない) 方法はありますか?の拡張です。

エラーのみが出力されるように stderr と stdout をリダイレクトし、不要なメッセージを除外する FIND または FINDSTR コマンドにエラー メッセージをパイプする必要があります。

tf merge $/Proj/Dev $/Proj/Test /recursive 2>&1 >nul | findstr /b ^
  /c:"TF401190: The local workspace " ^
  /c:"To improve performance, either reduce the number of items in the workspace, or convert the workspace to a server workspace."

コードを読みやすくするために、行継続を使用しました。

于 2015-07-09T22:11:29.707 に答える