Alex34234235
								
						
							
				  												- Стаж: 4 года 4 месяца
 				- Сообщений: 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
								
						
							
				  				  								- Стаж: 5 лет 5 месяцев
 				- Сообщений: 620
 				- Репутация: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 лет 9 месяцев
 				- Сообщений: 4124
 				- Репутация: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
								
						
							
				  				  								- Стаж: 5 лет 5 месяцев
 				- Сообщений: 620
 				- Репутация:72[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				Ander_73,     Спасибо! Самое правильное решение.
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								wadimus
								
						
							
				  				  								- Стаж: 8 лет 11 месяцев
 				- Сообщений: 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 лет 11 месяцев
 				- Сообщений: 749
 				- Репутация:91[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				%ProgramW6432% Эта переменная используется уровнем эмуляции WOW64 и присутствует только в 64-битных версиях Windows. Значения по умолчанию Windows Vista / 7/8/10:	%SystemDrive%\Program Files про ХР согласен .. но за покойниках не говорю    
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								Ander_73
								
						
							
				  				  								- Стаж: 8 лет 9 месяцев
 				- Сообщений: 4124
 				- Репутация:127[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				wadimus, что я сказал непонятного? Это НЕ РАБОТАЕТ в Висте.The ProgramW6432 and CommonProgramW6432 environment variables were added starting with Windows 7 and Windows Server 2008 R2.  Ссылка
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								wadimus
								
						
							
				  				  								- Стаж: 8 лет 11 месяцев
 				- Сообщений: 749
 				- Репутация:91[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				согласен .. но за покойниках не говорю ЗЫ. ваш какой способ определения разрядности?
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								Ander_73
								
						
							
				  				  								- Стаж: 8 лет 9 месяцев
 				- Сообщений: 4124
 				- Репутация:127[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				86458за покойниках не говорю  В условиях задачи перечисление ОС начиналось с ХР. Решение должно удовлетворять условиям, а не отменять их.86458ваш какой способ определения разрядности?  Ты вроде с 16-го тут сидишь! Сто раз уже приводилось стандартное решение:set xOS=64& if %PROCESSOR_ARCHITECTURE%==x86 if not defined PROCESSOR_ARCHITEW6432 set xOS=86  
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								wadimus
								
						
							
				  				  								- Стаж: 8 лет 11 месяцев
 				- Сообщений: 749
 				- Репутация:91[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				86460Ты вроде с 16-го тут сидишь!  я сижу тут? .. 5 лет ..     86460Сто раз уже приводилось стандартное решение  ты же списиалист нестандартных решений .. решил спросить .. думаю, зря
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
								 																			
			
            			
	
		 		Отправлено:  18-Июн-2021 19:23
					(спустя 1 день 7 часов)
				 
	
		
		
						
			
						
							
								Alex34234235
								
						
							
				  												- Стаж: 4 года 4 месяца
 				- Сообщений: 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
								
						
							
				  				  								- Стаж: 5 лет 5 месяцев
 				- Сообщений: 620
 				- Репутация: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 из 95 
	
	
		Текущее время: 04-Ноя 14:47 
		Часовой пояс: UTC + 3  
	 
	
 
	
	
		
		Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
  
	 
	 | 
 
 
	 
	 |