1

次のプロパティファイルがあります

jmx.connector.ip=127.0.0.1
jmx.connector.port=12345

キーと値のペアを読み取って解析したい

@ECHO OFF

set FILE=file.properties

REM initialize???
set JMXPORT=0
set JMXHOST=0

REM set their value???
for /F "tokens=1,2 delims==" %%i in (%FILE%) do (
    if "%%i"=="jmx.connector.port" JMXPORT=%%j
    if "%%i"=="jmx.connector.ip" JMXHOST=%%j
)

REM can't use their value
echo %JMXHOST%
echo %JMXPORT%

これはうまくいきません。JMXPORTfor ループ内とJMXHOSTfor ループ内で値を設定し、ループ外で使用したいと考えています。これどうやってするの?

4

2 に答える 2

2

setループ内に適切な呼び出しがありません。ループを次のように変更します。

for /F "tokens=1,2 delims==" %%i in (%FILE%) do (
    if "%%i"=="jmx.connector.port" set JMXPORT=%%j
    if "%%i"=="jmx.connector.ip" set JMXHOST=%%j
)

その後、動作するはずです (少なくとも、Windows 7 では動作しました)。

于 2013-01-31T21:12:00.853 に答える
1

次のようにステートメントに追加setしてみてください。if

if "%%i"=="jmx.connector.port" set JMXPORT=%%j
if "%%i"=="jmx.connector.ip" set JMXHOST=%%j

それがうまくいかない場合は、バッチ ファイルの先頭で遅延展開を有効にし、次のように変数!の代わりに使用する必要があります。%

@ECHO OFF

setlocal ENABLEDELAYEDEXPANSION

set FILE=file.properties

REM initialize???
set JMXPORT=0
set JMXHOST=0

REM set their value???
for /F "tokens=1,2 delims==" %%i in (%FILE%) do (
    if "%%i"=="jmx.connector.port" set JMXPORT=%%j
    if "%%i"=="jmx.connector.ip" set JMXHOST=%%j
)

REM can't use their value
echo !JMXHOST!
echo !JMXPORT!

setlocal
于 2013-01-31T21:14:14.307 に答える