Scenario
First off, Java.com has a Java applet to do this very thing.
http://java.com/en/download/uninstallapplet.jsp
However, if you need to run this on many computers using a login script, or patch management system, here is my alternative.
It may not be complete, but it removes several versions of java using the command line uninstall method and a little brute force execution.
Prerequisites
Tested on Windows XP & 2008 R2.
Command line should be compatible with Windows 2000 or newer.
Code
BATCH Command file to remove old versions of Java.
@echo off set newver=\\someserver\apps\Java\jre-6u21-windows-i586-s.exe REM Install current version silently. %newver% /passive IF NOT EXIST "%ProgramFiles%\Java\jre7\README.TXT" ( echo Java 7 not Found, set the newver location to automate install. REM you can add more logic here like: goto :end ) ELSE ( echo Java 7 Found echo+ ) set index=0 REM Remove old Java 6 lower. %index% represents a single character 0-9, you can add any REM appropriate Java GUID here replacing one digit of the minor version number. :proc1 if %index% EQU 10 goto :endproc1 echo %index% Uninstalling versions 0%index% 1%index% 2%index% 3%index% if present REM Java 6 MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F8321600%index%FF} /q MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F8321601%index%FF} /q MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F8321602%index%FF} /q MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F8321603%index%FF} /q REM Java 1.4 - 1.6 MsiExec.exe /X{7148F0A8-6813-11D6-A77B-00B0D01420%index%0} /q MsiExec.exe /X{7148F0A8-6813-11D6-A77B-00B0D01421%index%0} /q MsiExec.exe /X{3248F0A8-6813-11D6-A77B-00B0D01500%index%0} /q MsiExec.exe /X{3248F0A8-6813-11D6-A77B-00B0D01501%index%0} /q MsiExec.exe /X{3248F0A8-6813-11D6-A77B-00B0D01600%index%0} /q MsiExec.exe /X{3248F0A8-6813-11D6-A77B-00B0D01601%index%0} /q set /a index+=1 goto :proc1 :endproc1 :end