2

我正在使用批处理文件仅更新那些在我的 SVN 存储库中已更改的文件。这是我的批处理文件的一部分:

SET CHANGES=svnlook changed c:\myrepository
FOR /F "usebackq tokens=2" %%a IN (`%CHANGES%`) DO (echo %%a)

我只得到dok而不是dok version1.txt我猜那是因为空间。即使有空格,我必须如何更改代码才能获取文件名?那是因为令牌还是它在哪里削减了名字?

svnlook 的输出如下所示:

D Testprojekt/trunk/dok - Kopie (2).txt
D Testprojekt/trunk/dok - Kopie (3).txt
D Testprojekt/trunk/dok - Kopie (4).txt

所以我使用 tokens=2 只获取路径(Testprojekt/trunk/dok - Kopie (2).txt)而不是操作(例如 D=deleted)。

谢谢!

4

2 回答 2

3

Try using:

FOR /F "usebackq tokens=1,*" %%a IN (`%CHANGES%`) DO (echo %%b)

This assigns the first token to %a and all subsequent ones to the next letter i.e. %b

于 2012-01-09T12:38:52.230 回答
2

有了这个输出:

D Testprojekt/trunk/dok - Kopie (2).txt
D Testprojekt/trunk/dok - Kopie (3).txt
D Testprojekt/trunk/dok - Kopie (4).txt

...你可以试试这个:

FOR /F "usebackq tokens=1*" %%a IN (`%CHANGES%`) DO (
    echo %%b
)

位的tokens=1*意思是:

  1. 将第一个令牌存储到 %%a (ie D)
  2. 将该行的其余部分存储到 %%b
于 2012-01-09T12:46:28.633 回答