令牌不是通过[批处理]为变量创建的

时间:2015-02-20 02:09:04

标签: batch-file cmd

我想使用/ as分隔符从变量中提取标记。 我用过这个::

set fileinput=properties\iam\self_iam_properties.xml
for  /f "tokens=*delims=\" %%a in (%fileinput%) do @echo %%a

给了我以下错误:

The system cannot find the file properties\iam\self_iam_properties.xml.

为什么要搜索文件,我只需要使用变量中的值。我不想从文件中获取值。

同样在解析之后,我希望创建一个名为self_iam_parsedoutput.txt的文件,因此我需要从输入文件名中提取self_iam_。如何处理?

1 个答案:

答案 0 :(得分:0)

%fileinput%放在双引号中,将其视为字符串。

for /f "tokens=*delims=\" %%a in ("%fileinput%") do @echo %%a

请注意,因为您正在使用tokens=*,所以它实际上不会分成多个变量。如果您希望路径的每个部分都获得自己的变量,则可以使用类似tokens=1-26

的内容

for /f中转义变量的第二种方法是运行输出变量的命令。

for /f %a in ('echo.%variable%')

如果您遇到双引号问题,此表单非常有用。

至于文件名更改,如果输入文件始终为xyz_properties.xml且输出始终为xyz_parsedoutput.txt,则您可以使用%variable:old=new%

set inputfile=self_iam_properties.xml
set outputfile=%inputfile:properties.xml=parsedoutput.txt%