使用批处理文件读取键,值对

时间:2018-01-26 18:48:08

标签: windows batch-file

我正在尝试阅读包含50多个键值对的config.properties,并使用其中一个调用的.bat文件中的所有键。

我已经有了一个可以读取属性的工作代码但是它会打印key=value。我只想返回键值,例如john而不是键名。

1。 main.bat

set READER_FILE="C:\\read.bat"

@ECHO OFF    

: INVOKING CONFIG PROPERTIES
  call read.bat > %LOGGER% 2>&1
: call %READER_FILE%   

: call DownloadContent.bat > %LOGGER% 2>&1

 echo %name%
 echo %city%

2。 read.bat

@echo off    

for /F "eol=# delims== tokens=1,*" %%a in (config.properties) do (

    if NOT "%%a"=="" if NOT "%%b"=="" set config.%%a=%%b
)

set config.

for /F "tokens=1 delims==" %%v in ('set config. 2^>null') do (
    set %%v=
)

第3。 config.properties

name=john
city=NY
country=USA

如果我遗漏任何细节,请告诉我。

3 个答案:

答案 0 :(得分:0)

你需要另一个for循环来处理配置。变量

for /f "tokens=1,2 delims==" %%A ('set config.') echo %%A

那应该只输出以config.开头的变量名。

答案 1 :(得分:0)

setkey=value

@echo off
for /f "delims=" %%a in (config.properties) do set ###%%a

显示所有值:

for /f "tokens=2 delims==" %%a in ('set ###') do echo %%a

显示所有密钥:

for /f "tokens=1 delims==" %%a in ('set ###') do echo %%a

显示键和值:

 set ###

  for /f "tokens=1,2 delims==" %%a in ('set ###') do echo %%a / %%b

显示一个特定元素:

 echo %###name%
 echo %###city%
 echo %###country%

答案 2 :(得分:0)

我尝试了这段代码,它对我有用:

::Access config.properties file and read it as Key:Value
setlocal enabledelayedexpansion
for /f "tokens=1,* delims== " %%i in (Config.properties) do echo %%i:%%j

Output:
name:john
city:NY
country:USA

If you want to print only values, just remove %%i in above code:

setlocal enabledelayedexpansion
for /f "tokens=1,* delims== " %%i in (Config.properties) do echo %%j

Output:
john
NY
USA