【发布时间】:2018-05-10 15:59:03
【问题描述】:
我见过很多使用 awk、grep 等来执行此操作的命令,但我似乎无法做出不使用 3rd 方应用程序或其他语言的替代方案。
我想出了
for /f %%a in ('svn log -q ^| findstr /r "\|(.*?)\|"') do echo %%a
但它不返回任何东西
这是 svn log -q 返回的内容:
------------------------------------------------------------------------
number | nameOfPerson | date +0000 (long date)
------------------------------------------------------------------------
我想获得 nameOfPerson 部分。
感谢您的帮助!
【问题讨论】:
-
“使用 MS-DOS”是什么意思? 1980 年代的操作系统?还是您在谈论 Windows 命令提示符
cmd.exe?无论如何,阅读他的帮助findstr /?你会发现它只支持很少的搜索表达式...... -
我要注意两点:1) Windows 有 WSH,可以在利用各种系统的 COM 组件(包括
RegExpobject)的同时编写脚本。 (是的,MS 努力向用户隐藏 WSH 存在的事实——试图将他们推向 PowerShell 和 .NET,但仍然如此)。 2) WINdows 7 及更高版本(我认为甚至是 Vista,但谁在乎呢?)预装了 .NET 和 PowerShell;所以我真的认为不使用它们没有任何意义。 -
我花了一整天的时间阅读有关 findstr 并试图让它发挥作用。如果 findstr 不支持我的尝试,那么您有什么建议?
-
哦,还有一点——以防万一:
svn log支持--xml命令行选项,并且该格式的工具输出可以使用MSXML 使用的 COM 对象进行解析在 WSH 脚本中。 -
还有一点,也许可以让你走得更快:让 WSH 脚本在命令行管道中工作是微不足道的; here的方法。
标签: batch-file cmd command