0

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

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

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

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

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

4

1 回答 1

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
于 2012-05-07T14:11:16.177 回答