我試圖查詢特定的註冊表文件夾(或任何你想要調用它)來獲取一些信息。通過批處理語法查詢Windows註冊表
特別是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
文件夾包含已安裝軟件的列表。
問題是,每個軟件都是通過一個隨機的鍵值,如{0001B4FD-9EA3-4D90-A79E-FD14BA3AB01D}
而不是實際的軟件(如Skype
)來識別的。
這使得它很難找到Skype
標識符,因爲我通過一切需要循環這一Uninstall
文件夾內,並檢查DisplayName
值是否對應於Skype
(或任何其他應用程序的名稱)。
我需要使用批處理語法...這是我迄今爲止,但它在不同的計算機上表現不一樣,也許我根據reg輸出的一些錯誤格式獲得不同的變量分配?我不知道。我可以使用數據結構來包含任何reg
輸出嗎?任何事情都可以工作。
@echo off
for /f "tokens=*" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall') do (
for /f "tokens=2,* delims= " %%b in ('reg query %%a /v Publisher') do (
IF "%%c" == "Skype Technologies S.A." (
for /f "tokens=2,* delims= " %%d in ('reg query %%a /v UninstallString') do (
echo %%e
)
)
)
)
是否有一個更清潔和更安全的方式來批量實現這一點?
也許你最好在ServerFault上問這個問題。關於你的數據結構,只是把它寫到一個臨時文件是不夠的我假設?! – 2010-09-20 09:08:26