我想搜索这些注册表项(可能使用“REG Query ")
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
以及"Find“或"FindStr”特定变量并显示结果(echo?)
这个脚本有点像我想要的那样*
@ECHO OFF
:: Windows 7 only
IF NOT "%OS%"=="Windows_NT" GOTO Syntax
VER | FINDSTR /R /E /C:" 6\.[01]\.[0-9\.]*\]" >NUL || GOTO Syntax
:: Check command line arguments
IF "%~1"=="" GOTO Syntax
IF NOT "%~2"=="" GOTO Syntax
ECHO "%~1" | FINDSTR /R /C:"[/?]" >NUL && GOTO Syntax
SETLOCAL ENABLEDELAYEDEXPANSION
SET Count=0
FOR /F "tokens=*" %%A IN ('REG Query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /F "%~1" /D /S 2^>NUL ^| FINDSTR /R /B /C:"HKEY_"') DO (
REG Query "%%~A" /F DisplayName /V /E | FINDSTR /R /I /C:" DisplayName .* .*%~1" >NUL 2>&1
IF NOT ERRORLEVEL 1 (
SET /A Count += 1
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F DisplayName /V /E 2^>NUL ^| FIND /I " DisplayName "') DO ECHO Program Name = %%C
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F DisplayVersion /V /E 2^>NUL ^| FIND /I " DisplayVersion "') DO ECHO Program Version = %%C
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F InstallDate /V /E 2^>NUL ^| FIND /I " InstallDate "') DO (
SET InstallDate=%%C
ECHO Install Date = !InstallDate:~0,4!-!InstallDate:~4,2!-!InstallDate:~6!
)
FOR /F "tokens=7 delims=\" %%B IN ("%%~A") DO ECHO Unique Identifier = %%B
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F UninstallString /V /E ^| FIND /I " UninstallString "') DO ECHO Uninstall String = %%C
ECHO.
)
)
WMIC.EXE Path Win32_Processor Get DataWidth 2>NUL | FIND "64" >NUL
IF ERRORLEVEL 1 (
ECHO.
ECHO %Count% programs found
) ELSE (
SET Count32bit=0
FOR /F "tokens=*" %%A IN ('REG Query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /F "%~1" /D /S 2^>NUL ^| FINDSTR /R /B /C:"HKEY_"') DO (
REG Query "%%~A" /F DisplayName /V /E | FINDSTR /R /I /C:" DisplayName .* .*%~1" >NUL 2>&1
IF NOT ERRORLEVEL 1 (
SET /A Count32bit += 1
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F DisplayName /V /E 2^>NUL ^| FIND /I " DisplayName "') DO ECHO Program Name = %%C
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F DisplayVersion /V /E 2^>NUL ^| FIND /I " DisplayVersion "') DO ECHO Program Version = %%C
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F InstallDate /V /E 2^>NUL ^| FIND /I " InstallDate "') DO (
SET InstallDate=%%C
ECHO Install Date = !InstallDate:~0,4!-!InstallDate:~4,2!-!InstallDate:~6!
)
FOR /F "tokens=7 delims=\" %%B IN ("%%~A") DO ECHO Unique Identifier = %%B
FOR /F "tokens=2*" %%B IN ('REG Query "%%~A" /F UninstallString /V /E ^| FIND /I " UninstallString "') DO ECHO Uninstall String = %%C
ECHO.
)
)
ECHO.
ECHO %Count% 64-bit programs and !Count32bit! 32-bit programs found
)
ENDLOCAL
GOTO:EOF
:Syntax
ECHO.
ECHO GetUninstall.bat, Version 2.00 for Windows Vista and later
ECHO List or search uninstall command lines
ECHO.
ECHO Usage: GETUNINSTALL.BAT "filter"
ECHO.
ECHO Where: "filter" narrows down the search result to programs whose
ECHO uninstall data contains the string "filter"
ECHO.
ECHO Example: GETUNINSTALL.BAT "Adobe Reader"
ECHO.
ECHO Written by Rob van der Woude
ECHO http://www.robvanderwoude.com
:: Set return code for Windows NT 4 or later
IF "%OS%"=="Windows_NT" COLOR 00问题:
它确实显示了所有已找到的卸载字符串,如"%1“所述,并且与”Windows7pro SP1“一起工作,但与"Windows SP3”不兼容,而且我似乎无法使它在XP上工作。
REM IF NOT "%OS%"=="Windows_NT" GOTO Syntax
REM VER | FINDSTR /R /E /C:" 6\.[01]\.[0-9\.]*\]" >NUL || GOTO Syntax/\,当然不是那么容易,;-p /\
发布于 2013-07-16 17:37:44
这几乎如预期的那样:
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
REM SETLOCAL ENABLEDELAYEDEXPANSION
CLS
echo.Tim: uninstall (old/previous) Adobe ShockWave/Flash...
CALL "\\dc01.lksvdd.local\netlogon\Log_management.bat" >nul 2>&1
:: RUN_Once
IF NOT EXIST "%systemroot%\LOGS\LKSVDD\Tim\uninstall_(shockwave)flash_12+11.txt" (GOTO Uninstall_Adobe-Addons) ELSE GOTO:EOF
GOTO:EXIT
:Uninstall_Adobe-Addons
rem uninstall old adobe shockwave/flash installations; new adobe shockwave/flash setup pushed with GPO...
wmic product where "name like 'Adobe Flash Player 11%%'" call uninstall /nointeractive > "%systemroot%\LOGS\LKSVDD\Tim\uninstall_(shockwave)flash_12+11.txt" 2>&1
wmic product where "name like 'Adobe Flash Player 10%%'" call uninstall /nointeractive > "%systemroot%\LOGS\LKSVDD\Tim\uninstall_(shockwave)flash_12+11.txt" 2>&1
wmic product where "name like 'Adobe Shockwave Player 12%%'" call uninstall /nointeractive >> "%systemroot%\LOGS\LKSVDD\Tim\uninstall_(shockwave)flash_12+11.txt" 2>&1
wmic product where "name like 'Adobe Shockwave Player 11%%'" call uninstall /nointeractive >> "%systemroot%\LOGS\LKSVDD\Tim\uninstall_(shockwave)flash_12+11.txt" 2>&1
rem Abort possible ShutDown..................
"%windir%\system32\shutdown.exe" /a >nul 2>&1
:EXIT
ECHO #runTimeStamp -4- "uninstall_adobe-addons.cmd" [%DATE% %TIME%] EOF >> "%systemroot%\LOGS\LKSVDD\Tim\uninstall_(shockwave)flash_12+11.txt" 2>&1
rem echo.
REM script date: 16-07-2013
rem echo.
rem PAUSE
ENDLOCAL
GOTO:EOF“”会被卸载/删除,但是“”不会吗??这是正确的程序描述,但由于某种原因没有被识别,但不确定为什么?
发布于 2013-07-16 10:03:40
你为什么要这样对自己?您在VBScript中的代码:
Set re = New RegExp
re.Pattern = "(\d{4})(\d{2})(\d{2})"
Set wmi = GetObject("winmgmts://./root/cimv2")
For Each p In wmi.ExecQuery("SELECT * FROM Win32_Product")
WScript.Echo "Program Name = " & p.Name & vbNewLine _
& "Program Version = " & p.Version & vbNewLine _
& "Install Date = " & re.Replace(p.InstallDate, "$1-$2-$3") & vbNewLine _
& "Unique Identifier = " & p.IdentifyingNumber
Next您在PowerShell中的代码:
gwmi Win32_Product | select Name, Version, InstallDate, IdentifyingNumber | % {
"Program Name = " + $_.Name
"Program Version = " + $_.Version
"Install Date = " + ($_.InstallDate -replace '(\d{4})(\d{2})(\d{2})',
'$1-$2-$3')
"Unique Identifier = " + $_.IdentifyingNumber
}提取卸载字符串将需要更多的努力,但您需要做什么呢?如果您想卸载一个程序: WMI类提供了一个Uninstall方法。
https://stackoverflow.com/questions/17672991
复制相似问题