我制作了一个批处理脚本,除其他外,使用以下命令将我们的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错误。我觉得必须有一种方法可以做到这一点,即使它意味着在允许打印之前检查特定标记/字符串的输出。我仍然是命令行和批处理脚本的新手。任何帮助将不胜感激!感谢。
注意:我对解决错误本身的解决方案不感兴趣。此问题仅涉及如何抑制任何特定的错误。
答案 0 :(得分:1)
在bash shell中,您可以过滤掉这样的特定错误:
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
(其他错误信息正常)
答案 1 :(得分:0)
您需要以仅输出错误的方式重定向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."
我使用了行继续来使代码更容易阅读。