windows - 获取 SVN 修订号到批处理文件变量

标签 windows batch-file svn

想要从批处理文件中的 svn 分支获取最后更改的修订。

echo on
set svnUrl=%1
set releaseName=%2
set buildNumber=%3


for /f %%i in ('svn info  %svnUrl%/branches/%releaseName% -r HEAD ^| FINDSTR "^Last.Changed.Rev:"') do set revisionNumber=%%i
echo %revisionNumber%

但我得到的是 Last 而不是 Last Changed Rev: 10

在控制台中执行命令

D:\svn info http://desktop-24i22vk:81/svn/Test/branches/TST-1 -r HEAD

我正在接收控制台输出:

Path: TST-1
URL: http://desktop-24i22vk:81/svn/Test/branches/TST-1
Relative URL: ^/branches/TST-1
Repository Root: http://desktop-24i22vk:81/svn/Test
Repository UUID: 57a8baac-304e-e54b-94b3-b7d049dce932
Revision: 17
Node Kind: directory
Last Changed Author: import
Last Changed Rev: 10
Last Changed Date: 2016-07-22 15:26:37 +0200 (pá, 22 čvc 2016)

我想获取最后更改的修订号,这里是 10。我想将整行文本 Last Changed Rev: 10 存储到变量中,然后替换文本以仅获取数字。我什至会感激其他(Windows 批处理)方法如何获得它。 谢谢

最佳答案

FOR/F 的默认行为是将每行分成标记,由空格和/或制表符分隔,并且仅返回每行的第一个标记。这就解释了为什么你只得到“最后”。

您可以通过将 delims 选项设置为 nothing 来保留整行

for /f "delims=" %%i ...

但是您不需要整行。您只需要最后一个(第 4 个) token 。所以……

for /f "tokens=4" %%i ...

关于windows - 获取 SVN 修订号到批处理文件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38530713/

相关文章:

c++ - 如何测试主存访问时间?

windows - 我可以通过什么方式在Windows中使用Winsock2中定义的AF_UNIX

batch-file - 在 DOS 中如何使用以空格开头的字符串进行 SET/P

if-statement - DOS 批处理文件中可以有 IF block 吗?

windows - 如何在linux上应用windows SVN制作的diff?

svn - SVN 乌龟提交后失败

svn - 为什么当我尝试提交对目录的更改时 subversion 会超时?

C++ WIN32 : Short multitasking example

java - 如何在 Windows 中查看正在执行的 java 程序的类路径和 jvm args

parsing - 从批处理脚本中的字符串中获取最后一个标记