【发布时间】:2010-08-26 12:53:30
【问题描述】:
我对 windows 中的“for”批处理命令有疑问。
我有一个名为 keys.txt 的文件,其中包含这一行..
键、值、x86、windows7
我想解析这一行并将 4 个逗号分隔的变量存储在 4 个变量中。我通过以下 Windows 批处理脚本来实现。
for /F "tokens=1,2,3,4* delims=," %%i
in (keys.txt) do (
echo first is %%i
echo second is %%j
echo third is %%k
echo fourth is %%l
echo rest is %%m
echo -------------
)
但是,当我将 keys.txt 修改为
键、值、windows7
第三个变量打印为 windows7。我希望第三个变量为空,第四个变量为 windows7。如果我像这样在两个逗号之间留一个空格
键、值、、windows7
然后它将第三个变量打印为空,将第四个变量打印为 Windows7。
任何人都知道我怎样才能使较早的情况(即没有空格的情况)也能正常工作吗?
【问题讨论】:
-
为什么要使用批处理来解析文件?你还有其他选择吗?喜欢使用真正的文件解析器(语言)?如果你不能下载和使用东西,你可以使用vbscript,它更擅长做这些工作。
-
其实有很多代码是用批处理脚本写的,所以把整个东西迁移到vbs会是一项艰巨的任务。但是,我找到了另一种选择,即编写一个 vbs 文件,该文件将创建一个包含 set var=value 行列表的文件,然后从父批处理文件中调用此批处理文件。
标签: batch-file null for-loop cmd