如何从属性文件中读取值并将其存储在批处理文件中的变量中

时间:2012-05-07 08:54:31

标签: batch-file

我有一个属性文件,其中包含以下键值对:

version 1 = test
version 2 = qa
version 3 = prd

我想在批处理文件中的变量中使用这些值。

我在DOS中使用for循环命令,但是它取version的最后一个值,即prdversion 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 1version 2version 3都取值prd

有人能为此提供解决方案吗?

1 个答案:

答案 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