Das Skript (cmd) ruft eine Hilfsfunktion in VBS auf, um die Registry nach dem Uninstall-Befehl zu durchsuchen; das VBS generiert gleich ein passendes Skript in cmd-Syntax, das dann vom Hauptskript aufgerufen wird.
Beide Skripte (uninstall-java.cmd und .vbs) kann man dann auf ein Netzlaufwerk legen oder mit einem USB-Stick von jedem betroffenen PC aus starten, um alle JRE- und JDK-Instanzen zu entfernen. Wenn auf dem Netzlaufwerk keine Schreibrechte sind, muss das .cmd leicht angepasst werden und die temporäre Datei z.B. in %TEMP% angelegt werden. Ich hab's in meinem Fall gern, dass die Uninstall-Befehle in diesem Verzeichnis bleiben.
[Update: die Schreibrechte werden im .cmd benötigt, nicht im .vbs]
uninstall-java.vbs
const HKEY_LOCAL_MACHINE=&H80000002
Set StdOut=WScript.StdOut
Set StdErr=WScript.StdErr
Set o=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
o.EnumKey HKEY_LOCAL_MACHINE, Key, SubKeys
For Each subkey In SubKeys
o.GetStringValue HKEY_LOCAL_MACHINE,Key&"\"&subkey,"DisplayName",name
name=" "&name
if (Instr(name,"Development Kit")) Then
StdErr.WriteLine "JDK "&name
End If
if (InStr(name,"Java(TM)") or InStr(name,"J2SE") or InStr(name,"Java ")) Then
StdErr.WriteLine Key&"\"&subkey
StdOut.WriteLine "@echo "&name
o.GetStringValue HKEY_LOCAL_MACHINE,Key&"\"&subkey,"DisplayVersion",ver
StdOut.WriteLine "REM "&subkey&" => JRE "&ver
o.GetStringValue HKEY_LOCAL_MACHINE,Key&"\"&subkey,"UninstallString",uninst
StdOut.WriteLine "REM "&uninst
uninst=Replace(uninst,"/X","/passive /qb /X")
uninst=Replace(uninst,"/I","/passive /qb /X")
if (uninst <> "") Then
StdOut.WriteLine uninst
End If
End If
Next
uninstall-java.cmd
@ECHO off
cd /D %~dp0
cscript //nologo //B uninstall-java.vbs > uninst-java-%COMPUTERNAME%.cmd 2> java-%COMPUTERNAME%.txt
call uninst-java-%COMPUTERNAME%.cmd