我正在使用批处理文件来仅更新我的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 =删除)。
谢谢!
答案 0 :(得分:3)
尝试使用:
FOR /F "usebackq tokens=1,*" %%a IN (`%CHANGES%`) DO (echo %%b)
这会将第一个标记分配给%a,将所有后续标记分配给下一个字母,即%b
答案 1 :(得分: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*
位表示:
D
)