【问题标题】:Getting list of SVN users using batch使用批处理获取 SVN 用户列表
【发布时间】: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 组件(包括 RegExp object)的同时编写脚本。 (是的,MS 努力向用户隐藏 WSH 存在的事实——试图将他们推向 PowerShell 和 .NET,但仍然如此)。 2) WINdows 7 及更高版本(我认为甚至是 Vista,但谁在乎呢?)预装了 .NET 和 PowerShell;所以我真的认为不使用它们没有任何意义。
  • 我花了一整天的时间阅读有关 findstr 并试图让它发挥作用。如果 findstr 不支持我的尝试,那么您有什么建议?
  • 哦,还有一点——以防万一:svn log 支持--xml 命令行选项,并且该格式的工具输出可以使用MSXML 使用的 COM 对象进行解析在 WSH 脚本中。
  • 还有一点,也许可以让你走得更快:让 WSH 脚本在命令行管道中工作是微不足道的; here的方法。

标签: batch-file cmd command


【解决方案1】:

在命令行上:

for /f "tokens=2 delims=|" %A in ('svn log -q 2^>Nul') do @for %B in (%A) do @Echo:[%B]

批量加倍百分号:

@Echo off
for /f "tokens=2 delims=|" %%A in (
  'svn log -q 2^>Nul'
) do for %%B in (%%A) do Echo:[%%B]

第二个是从空格中删除名称。
您也可以将其设置为变量set "var=%%B"

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2020-07-13
    • 2014-10-17
    相关资源
    最近更新 更多