我正在尝试以 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
它给了我一个空变量。
如何在另一个变量中传递一个变量?