В VBScript мне нужен код для вычитания 1 из searchResult.Updates.Count, так что Count = 0 и WScript.Quit будут выполняться соответственно

Я уже много часов работал в Интернете, но не нашел ответа.

'ServerSelection values ssDefault = 0 ssManagedServer = 1 ssWindowsUpdate = 2 ssOthers = 3 'InStr values intSearchStartChar = 1 dim strTitle Set updateSession = CreateObject("Microsoft.Update.Session") Set updateSearcher = updateSession.CreateupdateSearcher() updateSearcher.ServerSelection = ssWindowsUpdate Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'") For I = 0 To searchResult.Updates.Count-1 Set update = searchResult.Updates.Item(I) If update.Title = "Intel Corporation driver update for Intel(R) HD Graphics" Then I need a code on this line to subtract 1 from searchResult.Updates.Count, so that Count = 0 and WScript.Quit will be run consequently. End If If searchResult.Updates.Count = 0 Then WScript.Quit End If set objShell = createobject("wscript.shell") objShell.Run("ms-settings:windowsupdate") , 0 Next WScript.Quit 

Вышеупомянутый VBScript проверяет наличие обновлений Windows. Я хочу удалить некоторые обновления, такие как обновления драйверов из searchResult.Updates.Count , чтобы searchResult.Updates.Count = 0 и WScript.Quit . Я хочу, чтобы он не предпринимал никаких действий при обнаружении указанных обновлений и предпринимал действия только при обнаружении других обновлений.

3 Solutions collect form web for “В VBScript мне нужен код для вычитания 1 из searchResult.Updates.Count, так что Count = 0 и WScript.Quit будут выполняться соответственно”

Надеюсь это поможет:

 Dim nMyRes : nMyRes = 20 MsgBox "nMyRes before loop: " & nMyRes For i = 0 To nMyRes-1 If i = 5 Then nMyRes = nMyRes - 1 If i = 10 Then nMyRes = nMyRes - 1 Next MsgBox "nMyRes after loop: " & nMyRes 

Этот фрагмент кода отлично работает. В вашем случае у вас есть объект (searchResult), и я не уверен, что вы можете его изменить. Вот почему я бы определил новую переменную и использовал ее так:

 Dim nMyNewvar : nMyNewvar = searchResult.Updates.Count - 1 ' ... ' ... For I = 0 To nMyNewvar ' ... If update.Title = "bla-bla" Then nMyNewvar = nMyNewvar - 1 

[EDITED]

 ' Add this one row here Dim nMyNewvar : nMyNewvar = searchResult.Updates.Count - 1 'For I = 0 To searchResult.Updates.Count-1 For I = 0 To nMyNewvar Set update = searchResult.Updates.Item(I) If update.Title = "bla-bla" Then 'I need a code on this line to subtract 1 from .... nMyNewvar = nMyNewvar - 1 End If If nMyNewvar = 0 Then WScript.Quit End If set objShell = createobject("wscript.shell") objShell.Run("ms-settings:windowsupdate") , 0 Next 

Изменить:

 If update.Title = "Intel Corporation driver update for Intel(R) HD Graphics" Then subtract 1 from searchResult.Updates.Count, so that Count = 0 and WScript.Quit will be run consequently. End If If searchResult.Updates.Count = 0 Then WScript.Quit End If 

чтобы:

 If update.Title = "Intel Corporation driver update for Intel(R) HD Graphics" Then WScript.Quit End If 

Тем не менее, похоже, что вы собираетесь добавить список вещей к этому. В этом случае логика ошибочна, так как она прекратит выполнение после обнаружения какой-либо одной вещи в списке. Вам нужно будет удалить элемент из фактического списка.

Кроме того, вы также не можете просто изменить счетчик: это свойство только для чтения, которое задается объектом, и оно не будет удалять элемент из индекса. Вы также используете цикл for, используя его как предел.

Лучший способ запустить цикл в наборе значений, которые вы также изменяете, – это использовать что-то вроде «while count> 0 do».

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

Прочитав вышеприведенный ответ duDE, я придумал следующее:

 'ServerSelection values ssDefault = 0 ssManagedServer = 1 ssWindowsUpdate = 2 ssOthers = 3 'InStr values intSearchStartChar = 1 Dim strTitle Set updateSession = CreateObject("Microsoft.Update.Session") Set updateSearcher = updateSession.CreateupdateSearcher() updateSearcher.ServerSelection = ssWindowsUpdate Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'") If searchResult.Updates.Count = None Then WScript.Quit Else Dim value : value = searchResult.Updates.Count End If For I = 0 To searchResult.Updates.Count-1 Set update = searchResult.Updates.Item(I) 'The following excluded updates have to be hidden via 'Show or hide updates' beforehand. 'Otherwise, they will be downloaded and installed by Windows Update. If update.Title = "The full update title" Then Value = Value - 1 If update.Title = "The full update title" Then Value = Value - 1 If update.Title = "The full update title" Then Value = Value - 1 An_item = "KB2267602" Set Act=CreateObject("wscript.shell") If instr(update.Title, An_item) <> 0 Then Act.Run("""C:\Program Files\Windows Defender\MpCmdRun.exe"" ""-SignatureUpdate"""), 0 value = value - 1 End If Next If Value = 0 Then WScript.Quit End If result = MsgBox (_ "The number of available updates is(" & Value & ")." & vbNewLine &_ "Do you want to open【Windows Update】?", vbYesNo + vbQuestion,_ "【There are available updates.】") Select Case result Case vbYes Act.run("ms-settings:windowsupdate") Case vbNo WScript.Quit End Select 

Это работает в моем конце. Диалоговое окно появится только в случае наличия доступных обновлений для исключения нежелательных. Скажите, пожалуйста, работает ли это в конце или может быть улучшено.

  • Обновление Windows 10 не может подключиться (за брандмауэром)
  • Не удается загрузить исправленную версию пакета обновления для Windows Media (проблема синхронизации iCloud / Outlook)
  • Почему обновления Windows 7 так долго устанавливаются?
  • Отмена последних установленных обновлений Windows с помощью командной строки
  • Windows 7 SP1 Windows Update проверяет наличие обновлений
  • Отключение Центра обновления Windows для конкретной программы или функции
  • Обновление до Windows 10 Pro, ошибок версии 1511, 10586 с 0x8024200D
  • Невозможно выбрать время перезапуска
  • Центр обновления Windows уничтожает мое интернет-соединение
  • Предотвращение установки обновлений Windows 10 от Windows 7
  • Как избавиться от сообщения «Обновления доступны» в Windows 10?
  • Как я могу запретить Windows запрашивать перезагрузку моего компьютера после обновления?
  • Interesting Posts

    Лучше ли добавить вторую видеокарту в Crossfire или заменить старую видеокарту?

    Обратный вызов jQuery при загрузке изображения (даже при кэшировании изображения)

    Dell Vostro 1000 с новой установкой XP Pro работает очень медленно

    Линукс Mint MATE Caja «Share Folder …» отсутствует

    Что такое «переключаемые графические карты» в ноутбуках?

    Как отключить WebRTC в Google Chrome

    Если подписи Mac-кода подделаны, что может не получиться?

    Драйвер NTFS-3G для ядра NTFS

    Новая видеокарта, предотвращающая загрузку

    Могу ли я получить проверку орфографии в MS Word, чтобы помнить мои грамматические решения?

    Автоматически шифровать и расшифровывать электронные письма с помощью gnupg (gpgrelay для unix)

    Как контролировать время до того, как Windows 7 просыпается из режима ожидания и спящего режима?

    Что отключает мой DSL-модем?

    Как зашифровать SSD от Samsung Evo 840?

    Excel ищет строку в нескольких ячейках, сравнивает и отображает строку с большим количеством отсчетов

    Давайте будем гением компьютера.