Windows - у меня проблема с выбором выходных столбцов с помощью команды for / f в Windows - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь получить список всех КБ, установленных в Windows. Я использую приведенную ниже команду.

C:\Windows>wmic qfe list
Caption                                     CSName        Description      FixComments  HotFixID   InstallDate  InstalledBy          InstalledOn  Name  ServicePackInEffect  Status
http://support.microsoft.com/?kbid=4514366  xxxx-LAP  Update                        KB4514366               NT AUTHORITY\SYSTEM  9/23/2019
http://support.microsoft.com/?kbid=4480056  xxxx-LAP  Update                        KB4480056               NT AUTHORITY\SYSTEM  8/6/2019
http://support.microsoft.com/?kbid=4512577  xxxx-LAP  Security Update               KB4512577               NT AUTHORITY\SYSTEM  9/23/2019
http://support.microsoft.com/?kbid=4512937  xxxx-LAP  Security Update               KB4512937               NT AUTHORITY\SYSTEM  9/13/2019
http://support.microsoft.com/?kbid=4516115  xxxx-LAP  Security Update               KB4516115               NT AUTHORITY\SYSTEM  9/23/2019
http://support.microsoft.com/?kbid=4521862  xxxx-LAP  Security Update               KB4521862               NT AUTHORITY\SYSTEM  10/20/2019
http://support.microsoft.com/?kbid=4519338  xxxx-LAP  Security Update               KB4519338               NT AUTHORITY\SYSTEM  10/20/2019

Из вышеприведенного вывода меня интересуют только выходные данные столбцов "HotFixID" и "InstalledOn". Остальное мне не нужно.

Я использую приведенную ниже команду, но вывод неправильный, поскольку он не игнорирует пространство для столбцов.

C:\Windows>for /f "tokens=5,8" %i in ('wmic qfe list ^| findstr /v "Caption"') do @echo HotFixID = %i, InstalledOn = %j
HotFixID = NT, InstalledOn =
HotFixID = NT, InstalledOn =
HotFixID = KB4512577, InstalledOn = 9/23/2019
HotFixID = KB4512937, InstalledOn = 9/13/2019
HotFixID = KB4516115, InstalledOn = 9/23/2019
HotFixID = KB4521862, InstalledOn = 10/20/2019
HotFixID = KB4519338, InstalledOn = 10/20/2019

Какая команда выполняетМне нужно, который может дать мне только выходные данные "HotFixID" и "InstalledOn" в вышеуказанном формате?

Спасибо.

1 Ответ

0 голосов
/ 07 ноября 2019

wmic может фильтровать нужные данные самостоятельно.
(первый токен всегда Node, поэтому мы берем tokens=2,3)
(заголовок пропущен до skip=2)

Важный трюк здесь заключается в том, чтобы использовать /format:csv для получения запятой в качестве разделителя (поэтому мы токенизируем без заботы о пробелах)

for /f "skip=2 tokens=2,3 delims=," %%a in ('wmic qfe get HotFixID^,InstalledOn /format:csv') do echo "HotFixID = %%a, InstalledOn = %%b
...