Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник для удаления старых версий Java и установки новой

Ответить
Настройки темы
CMD/BAT - [решено] Батник для удаления старых версий Java и установки новой

Новый участник


Сообщения: 15
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый день!

Ситуация: используется Java и в основном хаотично установлены разные версии на разных компах, на некоторых установлены сразу несколько одновременно, например 7.0.45 и 7.0.60

Помогите, пожалуйста, исправить батник, который проверял бы установлена ли старая версия, удалял бы ее и ставил бы новую взависимости от архитектуры системы. Написал свой, но каждый раз он выдает окно "This action is only valid for products that are currently installed", т.е. если не находит, что в системе была установлена определенная версия программы. А мне как-то хочется без всяких там всплывающих окон проверить/удалить старые версии Java и поставить новую

Код: Выделить весь код
ECHO OFF
rem Checking if Java x86 v7.0.450 is installed
:32UNINST745
IF EXIST "C:\Program Files\Java" (
MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F83217045FF} /qb
) ELSE (
goto 64UNINST745
)

ECHO OFF
rem Checking if Java x64 v7.0.450 is installed
:64UNINST745
IF EXIST "C:\Program Files\Java" (
MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F83217045FF} /qb
) ELSE (
goto :32UNINST706
)

ECHO OFF
rem Checking if Java x86 v7.0.60 is installed
:32UNINST706
IF EXIST "C:\Program Files\Java" (
MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F83217006FF} /qb
) ELSE (
goto 64UNINST706
)

ECHO OFF
rem Checking if Java x64 v7.0.60 is installed
:64UNINST706
IF EXIST "C:\Program Files\Java" (
MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F86417006FF} /qb
) ELSE (
goto 32UNINST800
)

rem Checking if Java x86 v8.00 is installed
:32UNINST800
IF EXIST "C:\Program Files\Java" (
MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F83218000FF} /qb
) ELSE (
goto 64UNINST800
)

rem Checking if Java x64 v8.00 is installed
:64UNINST800
IF EXIST "C:\Program Files (x86)\Java" (
MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F86418000FF} /qb
) ELSE (
goto 3264INST825
)

rem Installing Java x86/x64 v8.25
:3264INST825
IF EXIST "C:\Program Files (x86)" (
start /wait .\jre-8u25-windows-x64.exe /s
) ELSE (
start /wait .\jre-8u25-windows-x86.exe /s
)
EXIT

Отправлено: 08:07, 18-12-2014

 

Ветеран


Contributor


Сообщения: 26103
Благодарности: 7596

Профиль | Отправить PM | Цитировать


Выложите вывод:
Код: Выделить весь код
wmic.exe Product
строки с Java для каждой из версий.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:25, 18-12-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 15
Благодарности: 1

Профиль | Отправить PM | Цитировать


спасибо большое, но, если честно, не работал с командой "wmic.exe", боюсь ошибиться. Правильно ли так будет:

Код: Выделить весь код
ECHO OFF
rem Checking if Java x86 v7.0.450 is installed
:32UNINST745
IF EXIST "C:\Program Files\Java" (
wmic.exe /X{26A24AE4-039D-4CA4-87B4-2F83217045FF} /qb
) ELSE (
goto 64UNINST745
)

ECHO OFF
rem Checking if Java x64 v7.0.450 is installed
:64UNINST745
IF EXIST "C:\Program Files\Java" (
wmic.exe /X{26A24AE4-039D-4CA4-87B4-2F83217045FF} /qb
) ELSE (
goto :32UNINST706
)

Отправлено: 08:40, 18-12-2014 | #3


Ветеран


Contributor


Сообщения: 26103
Благодарности: 7596

Профиль | Отправить PM | Цитировать


Неправильно. Сделайте ровно то, о чём я прошу.

Откройте командную строку, наберите:
Код: Выделить весь код
wmic.exe Product >"c:\Out.txt"
нажмите «Enter». После того, как вновь появится приглашение командной строки, откройте текстовый файл «c:\Out.txt» в Блокноте, найдите строку/строки, относящиеся к Java, и скопируйте её/их сюда. Не весь файл, а только строки, относящиеся к Java. Проделайте это для каждой версии Java.

У меня нет ни одной версии Java, и я не планирую их устанавливать. Посему мне понадобится получить потребные данные от Вас. После этого я, возможно, смогу сделать потребное Вам, проанализировав полученные строки.

Отправлено: 09:12, 18-12-2014 | #4


Новый участник


Сообщения: 15
Благодарности: 1

Профиль | Отправить PM | Цитировать


Iska,

спасибо, что отозвались и пришли на помощь. Решение уже нашел - http://itme.info/install-java-with-remove-old-products/

Изменил код под себя и все работает:
Код: Выделить весь код
@ECHO OFF

REM Killing all processes and services
net stop JavaQuickStarterService
taskkill /F /IM iexplore.exe /T
taskkill /F /IM jqs.exe /T
taskkill /F /IM jucheck.exe /T
taskkill /F /IM javaw.exe /T

REM ============ Java Deletion ============
REM Сохранение в файл идентификаторов (GUID) установленных пакетов Java в формате установщика Windows Installer
SET Query=name like 'Java 7%%' OR name like 'Java(TM) 6%%' OR name like 'J2SE Runtime Environment%%' OR name like 'Java 2 Runtime Environment%%' OR name like 'Java Auto Updater%%'
wmic product where "%Query%" get IdentifyingNumber > "%TEMP%\delJava_1.txt"

REM Сохранение только GUID пакетов во второй файл
TYPE "%TEMP%\delJava_1.txt" | FINDSTR {........-....-....-....-............} > "%TEMP%\delJava_2.txt"

REM Цикл удаления пакетов
FOR /f "tokens=*" %%a IN (%TEMP%\delJava_2.txt) DO (msiexec /x %%a /qn /norestart)

REM Удаление временных файлов
IF EXIST "%TEMP%\delJava_1.txt" DEL "%TEMP%\delJava_1.txt"
IF EXIST "%TEMP%\delJava_2.txt" DEL "%TEMP%\delJava_2.txt"

rem Installing Java x86/x64 v8.25
IF EXIST "C:\Program Files (x86)" (
start /wait .\jre-8u25-windows-x64.exe /s /norestart
) ELSE (
start /wait .\jre-8u25-windows-x86.exe /s /norestart
)
EXIT

Отправлено: 11:52, 18-12-2014 | #5


Аватара для Anton04

Ветеран


Сообщения: 1646
Благодарности: 292

Профиль | Отправить PM | Цитировать


arman29,

А чем не устраивает простая команда:

Код: Выделить весь код
wmic.exe Product where "Name LIKE 'Java%%'" call Uninstall

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:26, 22-12-2014 | #6


Ветеран


Contributor


Сообщения: 26103
Благодарности: 7596

Профиль | Отправить PM | Цитировать


Anton04, а как быть с «Name», которое «J2SE Runtime Environment»? И к тому же, данный вариант удалит все версии, в том числе, и последнюю — не так ли?

Отправлено: 23:55, 22-12-2014 | #7


Аватара для Anton04

Ветеран


Сообщения: 1646
Благодарности: 292

Профиль | Отправить PM | Цитировать


Цитата Iska:
а как быть с «Name», которое «J2SE Runtime Environment»? »
а что мешает написать ещё одну команду с любым другим именем!?

Цитата Iska:
И к тому же, данный вариант удалит все версии, в том числе, и последнюю — не так ли? »
Несомненно. Но ничто не мешает не определять версию, а банально удалить все версии и поставить нужную. Удобство этого зависит от сценария применения, поэтому не настаиваю, а предлагаю как один из вариантов которым пользуюсь и сам.

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 16:48, 23-12-2014 | #8


Новый участник


Сообщения: 15
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Anton04:
Несомненно. Но ничто не мешает не определять версию, а банально удалить все версии и поставить нужную. Удобство этого зависит от сценария применения, поэтому не настаиваю, а предлагаю как один из вариантов которым пользуюсь и сам. »
а свою версию можете выложить, пожалуйста?

Отправлено: 17:51, 23-12-2014 | #9


Ветеран


Contributor


Сообщения: 26103
Благодарности: 7596

Профиль | Отправить PM | Цитировать


Цитата Anton04:
а что мешает написать ещё одну команду с любым другим именем!? »
И чем это будет отличаться от вышеприведённого:
Код: Выделить весь код
…name like 'Java 7%%' OR name like 'Java(TM) 6%%' OR name like 'J2SE Runtime Environment%%' OR name like 'Java 2 Runtime Environment%%' OR name like 'Java Auto Updater%%'
кроме того, что краем может задеть лишнего?!

Цитата Anton04:
Но ничто не мешает не определять версию, а банально удалить все версии и поставить нужную. »
Мешает. Нет никакой нужды удалять и затем устанавливать одну и ту же версию.

Цитата Anton04:
Удобство этого зависит от сценария применения, поэтому не настаиваю, а предлагаю как один из вариантов которым пользуюсь и сам. »
Сценарий описан в первом сообщении темы.

Отправлено: 18:36, 23-12-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник для удаления старых версий Java и установки новой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки avfiga Скриптовые языки администрирования Windows 70 03-03-2019 20:22
CMD/BAT - батник для удаления файла... Bara1gin Скриптовые языки администрирования Windows 5 06-12-2014 15:49
CMD/BAT - [решено] Нужен Батник для удаления части строки d_coder@vk Скриптовые языки администрирования Windows 1 18-03-2014 10:02
CMD/BAT - [решено] батник для автоматического удаления сетевых папок vanoman Скриптовые языки администрирования Windows 22 23-10-2013 16:02
CMD/BAT - Батник для удаления следов usb из реестра zedco Скриптовые языки администрирования Windows 0 26-03-2010 17:30




 
Переход