それにはいくつかの方法があります。ファイルの先頭から数行を読み取りたい場合、最も簡単な方法は、いくつかの変数でそれらを直接読み取ることです。
< Myfile (
set /P var1=
set /P var2=
)
これらの変数には完全な行が含まれているため、等号の後の部分を抽出する必要があることに注意してください。
あなたの例では、等号の行が必要なだけなのでfindstr "=" Myfile
、FORコマンドで使用してそれらを処理することができます。行数が定義されていない場合は、提案したように、必要なすべての行を配列に保存する必要があります。
setlocal EnableDelayedExpansion
set n=0
for /F "tokens=2 delims==" %%a in ('findstr "=" Myfile') do (
set /A n+=1
set var[!n!]=%%a
)
rem Show all array elements
for /L %%i in (1,1,%n%) do (
echo !var[%%i]!
)
rem Show just the second element
echo %var[2]%
ただし、特定のケースでは、必要な行は変数割り当ての形式になっています。これは、SET コマンドでそのような行を実行すると、行の値が「自動的に」保存されることを意味します。
for /F "delims=" %%a in ('findstr "=" Myfile') do set %%a
DIR1
前の FOR の後、またはDIR2
変数の値を直接取得できます。次に例を示します。
echo %DIR1%
echo %DIR2%
この方法は非常に単純で、読み込まれる個々の変数をテストする必要はありません。
値の等号の後のスペースを削除する場合は、FOR オプションを調整して削除できます。
for /F "tokens=1* delims== " %%a in ('findstr "=" Myfile) do set %%a=%%b