Variables 在循环的批处理文件中的子字符串操作中使用变量
我试图在FOR循环中使用FIXED_LENGTH变量 在循环中直接使用字符串的长度可以得到正确的结果,但是尝试使用变量是行不通的。有什么想法吗 提供正确结果的代码段 无法生成正确结果的代码段: 我试过了Variables 在循环的批处理文件中的子字符串操作中使用变量,variables,batch-file,for-loop,Variables,Batch File,For Loop,我试图在FOR循环中使用FIXED_LENGTH变量 在循环中直接使用字符串的长度可以得到正确的结果,但是尝试使用变量是行不通的。有什么想法吗 提供正确结果的代码段 无法生成正确结果的代码段: 我试过了 SET FOLDER_NAME=!CUR_LINE:~!!FIXED_LENGTH!!! SET FOLDER_NAME=!CUR_LINE:~!FIXED_LENGTH!! SET FOLDER_NAME=!CUR_LINE:~%FIXED_LENGTH%! SVN_url_List.txt
SET FOLDER_NAME=!CUR_LINE:~!!FIXED_LENGTH!!!
SET FOLDER_NAME=!CUR_LINE:~!FIXED_LENGTH!!
SET FOLDER_NAME=!CUR_LINE:~%FIXED_LENGTH%!
SVN_url_List.txt中的输入如下所示:
https://projects.abcdefg.com/subversion/svnrepo1
https://projects.abcdefg.com/subversion/svn_repo_2
https://projects.abcdefg.com/subversion/another repo 3
我期待的结果是:
svnrepo1
svn_repo_2
another repo 3
第一个代码段产生正确的结果。
但是,使用第二个代码段会产生如下结果:
https://projects.abcdefg.com/subversion/svnrepo1FIXED_LENGTH
https://projects.abcdefg.com/subversion/svn_repo_2FIXED_LENGTH
https://projects.abcdefg.com/subversion/another repo 3FIXED_LENGTH
语法错误。变量引用从何处开始/结束?解析器无法确定它
SET FOLDER_NAME=!CUR_LINE:~%FIXED_LENGTH%!
几乎,语法分析可以处理这种语法,但行为不好。由于变量(FIXED_LENGTH
)在代码块的中被赋值,并且在变量赋值之前,解析器在解析时用变量的值替换了对变量的读取操作(没有用于读取变量值的延迟扩展语法),操作将失败
在您的情况下,您可以在for
循环之前定义变量,而不是在for
循环中定义固定长度
变量。因此,当解析for
命令的do
子句中的行块时,变量将具有相应的值
如果您喜欢/需要在for
循环中声明变量,则必须使用
for %%a in (!FIXED_LENGTH!) do SET FOLDER_NAME=!CUR_LINE:~%%a!
这样,FIXED_LENGTH
上的读取操作被延迟,分配给for
循环的可替换参数,并且在子字符串操作中使用该参数代替变量引用
SET FOLDER_NAME=!CUR_LINE:~!!FIXED_LENGTH!!!
SET FOLDER_NAME=!CUR_LINE:~!FIXED_LENGTH!!
SET FOLDER_NAME=!CUR_LINE:~%FIXED_LENGTH%!
for %%a in (!FIXED_LENGTH!) do SET FOLDER_NAME=!CUR_LINE:~%%a!