Я пытаюсь распечатать список исправлений в формате JSON, как например:Удаление нежелательных запятая 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
цикле я устанавливаю патч массива для каждого патча получил сюда m вывод команды. Впоследствии я пытаюсь прочитать каждый элемент в массиве и напечатать их по порядку.
* Здесь он правильно печатает первый элемент. Но когда я его заменяю
for /f "tokens=1" %%G in (" %patch[!index!]% ") do set p1=%%G
Это дает мне пустую переменную.
Как передать переменную внутри другой переменной?
Вы инициализируете% count1% до 1, но% index% to 0. Это то, что вызывает пустой первый элемент. Инициировать% count1% до 0 и посмотреть, исправляет ли он это. – rojo
Я все еще получаю то же самое. даже если% count1% = 0 не должен видеть патч '' [0] "'? – KH17
Я так не думаю, потому что вы увеличиваете count1 до установки первого элемента. Первым элементом в вашем массиве является 'patch [1]'. Но если 'patch [1]' пуст, вам может потребоваться изменить 'skip = 1' на' skip = 2' в вашем 'for/f'. – rojo