0

次のキーと値のペアを持つプロパティ ファイルがあります。

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

これらの値をバッチ ファイルの変数で使用したいと考えています。

同じためにDOSでforループコマンドを使用していますが、versionie 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 1は、値version 2version 3取りますprd

誰かがこれに対する解決策を提供できますか?

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 に答える