我需要解析具有以下格式的文件:
A + tags/RWSTestConsole_tag1/
(from trunk/RWSTestConsole/:r776)
所以我使用带计数器的FOR / F循环并根据我是否在查看第1行或第2行来检查令牌。一切正常,但第2行的第一个令牌包括前导空格("来自")和a)我认为FOR上的delims会处理空格b)理论上我可以比较一个设置为"的常量字符串。从"但那就是那种笨蛋。
这是我的FOR命令:
for /F "tokens=1,2,3,4,5 delims=():/ " %%a in (svn.txt) DO (
我可以对FOR命令进行更改以忽略空格吗?如果没有办法修剪FOR循环的DO子句中的标记,那么我只得到没有前导空格的单词?
编辑:
这是在脚本中从Subversion SVNLOOK命令输出的,该脚本管理是否允许"标记"要被创造。输出可以是1行,必须格式化为:
D / tags / tagfoldername /
如果它是一行,但它不是实际标记文件夹的删除,那么它就是一个错误。这个案子得到处理。
如果它超过2行,则表示文件列表,这是一个错误。我有办法处理。
我遇到问题的情况是,如果它是2行,则需要采用上面显示的格式:
A + tags / RWSTestConsole_tag1 / (来自trunk / RWSTestConsole /:r776)
col 1 =" A"。 col 3 =" +",col 5 ="标签"第一行的其余部分是标签文件夹名称。第二行是创建请求的来源,因此它必须从"开始,然后是" trunk"," branches"或"标签"后跟单级文件夹名称和修订号。
我使用了如上所述的FOR命令。在DO子句中,我查看一个计数器来判断我是在解析第1行还是第2行。第1行很简单,我有处理它的所有逻辑。
第2行由同一个FOR命令解析,第一个标记(%% a)删除" {"来自delims,但留下了所有领先的空白,所以我回到了%% a ="从"
我需要知道是否有一种方法可以修改FOR命令以删除空格或在FOR DO子句中修剪%% a以删除空白。
编辑2:FOR循环代码
set c=1
for /F "tokens=1,2,3,4,5 delims=():/ " %%a in (svn.txt) DO (
echo op=%%a, %%b, %%c, %%d, %%e
if !c!==1 (
set rc1=0
if /I %%a EQU A (
if "%%b" EQU "+" (
if [%%e] EQU [] (
echo Tag from a Copy Op
set rc1=0
) else (
echo Found a subfolder: %%e - not a tag delete
set rc1=1
)
) else (
echo Tag not a Copy
set rc1=1
)
)
)
if !c!==2 (
set rc2=0
set str1=%%a
echo String replace 1 = !str!
set str2=!str1:~-4!
echo String Replace 2 *!str2!*
if /I !str2! EQU FROM (
set isvalid=false
if %%b EQU trunk set isvalid=true
if %%b EQU branches set isvalid=true
if %%b EQU tags set isvalid=true
if !isvalid! EQU true (
set rc2=0
) else (
set rc2=1
echo Invalid source for Tag Creation
)
) else (
set rc2=1
echo Tag not FROM
)
)
set /a c+=1
)
echo RC1=!rc1!
echo RC2=!rc2!
set /a rc=!rc1!+!rc2!
echo final RC = !rc!