我有一个属性文件,其中包含以下键值对:
version 1 = test
version 2 = qa
version 3 = prd
我想在批处理文件中的变量中使用这些值。
我在DOS中使用for循环命令,但是它取version
的最后一个值,即prd
(version 3
)。
以下是代码:
set total=3
for /f %%a in (1 2 %total%) do (
echo %%a
FOR /F "eol=; tokens=2,2 delims==" %%i IN ('findstr /i "version%%a" test.txt') DO (
set version%%a=%%i
)
)
所有变量version 1
,version 2
和version 3
都取值prd
。
有人能为此提供解决方案吗?
答案 0 :(得分:2)
您需要查看FOR命令的文档(键入HELP FOR)。有许多变化看起来相似,但表现不同。我不知道您发布的代码如何能够给出您描述的结果,但无论如何......
如果您的文本文件名为“test.txt”,其内容如下所示
version1=test
version2=qa
version3=prd
然后根据需要获得3个变量很简单。
@echo off
for /f "delims=" %%A in (test.txt) do set %%A
但是你的文件有额外的空间,我认为你不想要。变量名中会有空格,每个值中都有一个前导空格。我认为以下内容将为您提供所需的信息。它将从变量名中消除空格,并从值中消除前导空格。
@echo off
setlocal enableDelayedExpansion
for /f "tokens=1* delims==" %%A in (test.txt) do (
set name=%%A
set "name=!name: =!"
for /f "tokens=*" %%C in ("%%B") do set "!name!=%%C"
)
set version
针对此文本文件运行上述脚本:
version 1 = test
version2=qa
version 3 = two words
version 4 = a = b
给出了这些结果:
version1=test
version2=qa
version3=two words
version4=a = b