2013-04-10 39 views
0

因此,如果不會變得複雜,我試圖完成的要點是我目前通過程序的顯示名稱列出了reg註冊查詢的結果,一個數字給它,然後再通過數字來調用它。當它列出結果時,它會使用findstr從列表中過濾特定程序(例如其中包含Microsoft的任何程序),因爲我不希望它們成爲卸載的選項。現在,它的工作原理基本上,除了它返回這樣的:測試註冊查詢是否爲批處理腳本中的特定值

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語句,試圖把整個對%%的n(計數! !)部分在IF語句中,用於測試Microsoft,dell等是否在DisplayName中,然後只顯示並增加計數器(如果它合適),但這也不起作用。我在這裏有什麼想法?

而且沒有關係,也不是很重要,但是有誰知道過濾的一種更好的方法,而不是對整行findstr語句進行代碼鏈接?像排除列表或其他東西?

回答

1

在快速猜測,試試,FOR循環之前,(比如說後SET COUNT...

set excluded=Microsoft Dell MDOP MED 

然後FIND " Displayname"

這應該過濾掉任何後級聯

|findstr /v "%excluded%" 

空格分隔的單詞excludeme

然後可以刪除您現有的級聯findstr,因爲這些名稱在內部for循環之前被刪除,因此也不會獲取數字。

參見 findstr /?

從提示docco ...

+0

偉大的作品,唯一的問題是有一些對他們有空間(即Configuration Manager客戶端),我要排除,但不希望排除所有的一對夫婦計劃用配置或經理或客戶端的話來編程。另外,空白名稱呢?只需使用空引號? – Flynn 2013-04-10 18:09:26

+0

在'...「%excludeme%」'之後層疊'findstr/v/i/c:「配置管理器」'。 '/ c'使'findstr'精確地查找指定的單詞 - 包括空格。 /我可能或不想要 - 使測試不區分大小寫。 – Magoo 2013-04-10 18:20:35

+0

太棒了,效果很棒!謝謝 – Flynn 2013-04-10 18:21:57

相關問題