パッチのリストを JSON 形式で出力しようとしています。
"patches" : {
"1" : "KB123456",
"2" : "KB123456", ...
しかし、これは私が得ているものです:
"patches" : {
"1" : "",
"2" : "patch[2]",
"3" : "patch[3]", ...
これは私のコードです
@echo off
set count1=1
setlocal enabledelayedexpansion
set patches="wmic qfe get HotfixID"
for /f "skip=1" %%i in (' %patches% ') do for /f "delims=" %%j in ("%%i") do (
set patch[%count1%]=%%j
set /a count1=count1+1
)
if %count1%==1 (
echo "patch" : "%patch[1]%",
) else (
echo "patches" : {
set index=0
:loop
set /a index=index+1
for /f "tokens=1" %%G in (" %patch[1]% ") do set p1=%%G ::<---*
echo %p1%
rem set p=%patch[!index!]%
rem echo "!index!" : "%p%",
if NOT "%index%" == "%count1%" goto :loop
set p=%patch[%count1%]%
echo "%count1%" : "%p%"
echo }
)
endlocal
最初のfor
ループでは、コマンド出力から受け取った各パッチに配列パッチを設定しています。その後、配列内の各要素を読み取って順番に出力しようとしています。
* ここでは、最初の要素を正しく出力します。しかし、それを置き換えると
for /f "tokens=1" %%G in (" %patch[!index!]% ") do set p1=%%G
それは私に空の変数を与えます。
別の変数内で変数を渡すにはどうすればよいですか?