Так что, не доводя до свернутого, суть того, что я пытаюсь выполнить, заключается в том, что в настоящее время я перечисляю результаты запроса reg из отображаемого имени программ, назначая номер к нему, а затем называть его по номеру. Когда он перечисляет результаты, он затем использует findstr для фильтрации определенных программ (таких как что-либо с микрософт в нем) из списка, потому что я не хочу, чтобы они даже были вариантом для удаления. Сейчас она работает в основном, за исключением того, что возвращает так:Тестирование, если Reg Query является конкретным значением в пакетном скрипте
Let's say the programs in the Registry are:
Microsoft Update (should be filtered)
Notepad
Java
Microsoft Word (should be filtered)
Yahoo Toolbar
Когда я запускаю это:
: progList64
cls
set regVar=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
set opt=64
echo _______________________________________________________
echo.
echo Please wait while I compile a list of known programs...
echo _______________________________________________________
echo.
echo %tab%64bit Programs
echo Index%tab%Name
set count=0
for /f "tokens=2,*" %%a in ('Reg Query %regVar% /S^|find " DisplayName"') do (
set /a count+=1
setlocal EnableDelayedExpansion
for %%n in (!count!) do (
endlocal
set product[%%n]=%%b
echo %%n.%tab%%%b | findstr /V /C:"Microsoft" | findstr /V /C:"Dell" | findstr /V /C:"MDOP" | findstr /V /C:"MED"
)
)
echo _______________________________________________________
echo.
echo ============ PRESS 'M' TO GO TO MAIN MENU =============
echo.
goto uninstallerMenu
я получаю это:
2. Notepad
3. Java
5. Yahoo Toolbar
Так позже, когда я звоню из массива вы действительно можете поставить 1 или 4 и выбрать этот продукт, даже если он не отображается. Я пытаюсь фильтровать его, прежде чем он печатает, что он печатает только то, что я хочу, в результате чего в этом:
1. Notepad
2. Java
3. Yahoo Toolbar
Я пытаюсь с помощью различных IF заявления, пытался положить цельные для %% п в (кол! !) в выражении IF, который проверяет, находятся ли Microsoft, dell и т. д. в DisplayName, а затем отображает и увеличивает счетчик, если он подходит, но это тоже не работает. Я нахожусь здесь на уме, какие-то идеи?
И несвязанный и не очень важный, но кто-нибудь знает лучший способ фильтрации, а не daiychaining целый ряд утверждений findstr? Как список исключений или что-то еще?
прекрасно работает, только вопрос есть несколько программ, которые имеют пробела в них (т.е. Configuration Manager Client), который я хочу, чтобы исключить, но не хочу, чтобы исключить каждый программа с конфигурацией слов или менеджером или клиентом. Также, как насчет пробелов? Просто используйте пустые кавычки? – Flynn
cascade a 'findstr/v/i/c:" диспетчер конфигурации "после" ... "% excludeme%" '. '/ C' заставляет' findstr' искать точно указанные слова - включая пробел./I вы можете или не хотите - делает тест нечувствительным к регистру. – Magoo
Удивительный, отлично работает! Спасибо – Flynn