【问题标题】:batch FOR /F and space in file/pathname and usage of token?批处理 FOR /F 和文件/路径名中的空间以及令牌的使用?
【发布时间】:2012-01-09 11:32:24
【问题描述】:

我正在使用批处理文件来仅更新那些在我的 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)。

谢谢!

【问题讨论】:

  • 您能否编辑问题并添加原始 svnlook 输出的示例?

标签: svn batch-file svnlook


【解决方案1】:

尝试使用:

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

这会将第一个标记分配给 %a 并将所有后续标记分配给下一个字母,即 %b

【讨论】:

  • 是的,这是一个开始,我现在以正确的方式找到了路径...给我一些时间来进一步测试。
  • 该死,当我在做一些研究时你得到了答案xD
【解决方案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(即D
  2. 将该行的其余部分存储到 %%b

【讨论】:

    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2012-08-29
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多