Alex34234235
 - Стаж: 3 года 9 месяцев
- Сообщений: 35
- Репутация:0[+] [-]
|
Доброго времени суток, уважаемые форумчане! Подскажите пожалуйста, решил в рамках автоматической установки приложений сделать bat-файл для установки приложений в зависимости от разрядности системы: @Echo Off If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" Firefox Setup 89.0.msi -ms Goto End :Start_x64 Start "Firefox" Firefox Setup 89.0x64.msi -ms Goto End :End Решил пойти дальше и попробовать также добавить зависимость от версии системы (Xp, 7, 8, 10). Например автоустановка Sumatra PDF, есть версии под обе разрядности, а также старая версия для XP. Вопрос, как сделать условия в рамках одного батника (если это не представляется возможным, то может можно реализовать вызовым др. батника): если система Windows XP, то: 1. определить разрядность 2. если битность x86 запустить файлx32.exe 3. если битность x64 запустить файлx64.exe если система Windows 7, то: определить разрядность 1. определить разрядность 2. если битность x86 запустить файлx32.exe 3. если битность x64 запустить файлx64.exe если система Windows 8.1, то: определить разрядность 1. определить разрядность 2. если битность x86 запустить файлx32.exe 3. если битность x64 запустить файлx64.exe если система Windows 10, то^ определить разрядность 1. определить разрядность 2. если битность x86 запустить файлx32.exe 3. если битность x64 запустить файлx64.exe Спасибо!
|
 Отправлено: 16-Июн-2021 22:21
(спустя 1 час 15 минут)
Gvint64
  - Стаж: 4 года 10 месяцев
- Сообщений: 621
- Репутация:72[+] [-]
|
Alex34234235, Определить ОС - как вариант можно так:ver | findstr /IL "5.0." > nul if %errorlevel% equ 0 goto 2000 Rem "Windows 2000" ver | findstr /IL "5.1." > nul if %errorlevel% equ 0 goto XP Rem "Windows XP" ver | findstr /IL "5.2." > nul if %errorlevel% equ 0 goto 2003 Rem "Windows 2003" ver | findstr /IL "6.0." > nul if %errorlevel% equ 0 goto Vista Rem "Windows Vista" ver | findstr /IL "6.1." > nul if %errorlevel% equ 0 goto Win7 Rem "Windows 7" ver | findstr /IL "6.2." > nul if %errorlevel% equ 0 goto Win8 Rem "Windows 8" ver | findstr /IL "6.3." >nul if %errorlevel% equ 0 goto Win81 Rem "Windows 8.1" ver | findstr /IL "10.0." >nul if %errorlevel% equ 0 goto Win10 Rem "Windows 10" :2000 ......... :XP ......... :2003 ......... :Vista ......... :Win7 ......... :Win8 ......... :Win81 cd /D "%~dp0" if exist "%ProgramFiles(x86)%" ( start /d"%~dp0" файлx64.exe %* ) else ( start /d"%~dp0" файлx32.exe %* ) ......... :Win10 .........
Последний раз редактировалось: Gvint64 (2021-06-21 20:17), всего редактировалось 2 раз(а)
|
Ander_73
  - Стаж: 8 лет 2 месяца
- Сообщений: 3975
- Репутация:127[+] [-]
|
Gvint64,for %%i in (5.0 5.1 5.2 6.0 6.1 6.2 6.3 10.0) do ver| >nul find "%%i"&& goto %%i exit :6.1 echo Win7
|
Gvint64
  - Стаж: 4 года 10 месяцев
- Сообщений: 621
- Репутация:72[+] [-]
|
Ander_73, Спасибо! Самое правильное решение.
|
wadimus
  - Стаж: 8 лет 4 месяца
- Сообщений: 749
- Репутация:91[+] [-]
|
86442 if exist "%ProgramFiles(x86)%" ( start /d"%~dp0" файлx64.exe %* ) else ( start /d"%~dp0" файлx32.exe %* ) если подобный батник будет запускаться из-под 32х-битной программы, то переход на 64х-битую ветку не будет. вот все перешли на sfx-exe комбайны с менюшками выбора программ, в которых используется лаунчер (Launcher.exe) - он 32х-битный. так правильнее:if defined ProgramW6432 ( проверил на своём репаке 1С. ИМХО, неправ
|
wadimus
  - Стаж: 8 лет 4 месяца
- Сообщений: 749
- Репутация:91[+] [-]
|
%ProgramW6432% Эта переменная используется уровнем эмуляции WOW64 и присутствует только в 64-битных версиях Windows. Значения по умолчанию Windows Vista / 7/8/10: %SystemDrive%\Program Files про ХР согласен .. но за покойниках не говорю
|
Ander_73
  - Стаж: 8 лет 2 месяца
- Сообщений: 3975
- Репутация:127[+] [-]
|
wadimus, что я сказал непонятного? Это НЕ РАБОТАЕТ в Висте.The ProgramW6432 and CommonProgramW6432 environment variables were added starting with Windows 7 and Windows Server 2008 R2. Ссылка
|
wadimus
  - Стаж: 8 лет 4 месяца
- Сообщений: 749
- Репутация:91[+] [-]
|
согласен .. но за покойниках не говорю ЗЫ. ваш какой способ определения разрядности?
|
Ander_73
  - Стаж: 8 лет 2 месяца
- Сообщений: 3975
- Репутация:127[+] [-]
|
86458за покойниках не говорю В условиях задачи перечисление ОС начиналось с ХР. Решение должно удовлетворять условиям, а не отменять их.86458ваш какой способ определения разрядности? Ты вроде с 16-го тут сидишь! Сто раз уже приводилось стандартное решение:set xOS=64& if %PROCESSOR_ARCHITECTURE%==x86 if not defined PROCESSOR_ARCHITEW6432 set xOS=86
|
wadimus
  - Стаж: 8 лет 4 месяца
- Сообщений: 749
- Репутация:91[+] [-]
|
86460Ты вроде с 16-го тут сидишь! я сижу тут? .. 5 лет ..  86460Сто раз уже приводилось стандартное решение ты же списиалист нестандартных решений .. решил спросить .. думаю, зря
|
 Отправлено: 18-Июн-2021 19:23
(спустя 1 день 7 часов)
Alex34234235
 - Стаж: 3 года 9 месяцев
- Сообщений: 35
- Репутация:0[+] [-]
|
Сделал так: for %%i in (5.0 5.1 5.2 6.0 6.1 6.2 6.3 10.0) do ver| >nul find "%%i"&& goto %%i exit :5.1 echo WinXP If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.1.2-install.exe -s Goto End :End :5.2 echo WinXPx64 If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.2-install.exe -s Goto End :Start_x64 Start "Firefox" SumatraPDF-3.2-64-install.exe -s Goto End :End :6.0 echo WinVista If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.2-install.exe -s Goto End :Start_x64 Start "Firefox" SumatraPDF-3.2-64-install.exe -s Goto End :End :6.1 echo Win7 If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.2-install.exe -s Goto End :Start_x64 Start "Firefox" SumatraPDF-3.2-64-install.exe -s Goto End :End :6.2 echo Win8 If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.2-install.exe -s Goto End :Start_x64 Start "Firefox" SumatraPDF-3.2-64-install.exe -s Goto End :End :6.3 echo Win8.1 If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.2-install.exe -s Goto End :Start_x64 Start "Firefox" SumatraPDF-3.2-64-install.exe -s Goto End :End :10.0 echo Win10 If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.2-install.exe -s Goto End :Start_x64 Start "Firefox" SumatraPDF-3.2-64-install.exe -s Goto End :End Протестил в Win7 x86 и x64, а также WinXp x86, установка производится, однако он продолжает дальше пытаться поставить той же битности, хотя версия винды уже другая. Как реализовать так, что бы выполнялась только часть соответствующая системе в которой он выполняется? понимаю что проблема в Goto End, однако как это обыграть не понимаю.
|
Gvint64
  - Стаж: 4 года 10 месяцев
- Сообщений: 621
- Репутация:72[+] [-]
|
Alex34234235:6.1 echo Win7 If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 Goto End :Start_x86 Start "Firefox" SumatraPDF-3.2-install.exe -s Goto End :Start_x64 Start "Firefox" SumatraPDF-3.2-64-install.exe -s Goto End :End Как-то так.:6.1 echo Win7 If !%PROCESSOR_ARCHITECTURE%==!x86 Goto Start_x86 If !%PROCESSOR_ARCHITECTURE%==!AMD64 Goto Start_x64 :Start_x86 Start /wait "Firefox" SumatraPDF-3.2-install.exe -s exit :Start_x64 Start /wait "Firefox" SumatraPDF-3.2-64-install.exe -s exit
Последний раз редактировалось: Gvint64 (2021-06-18 19:34), всего редактировалось 1 раз
|
Страница 54 из 94
Текущее время: 10-Апр 21:04
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|