dem0n43
- Стаж: 9 лет 7 месяцев
- Сообщений: 65
- Репутация:2[+] [-]
- Откуда: ИзЗАДА
|
conty9, Папка SDI_Update файлы SDI_R423.exe SDI_x64_R423.exe меняются версии после SDI_R как задать переменную на запуск SDI_R???.exe
|
|
Опять пригодился Dir. Для произвольного количества символов после sdi_r for /f "tokens=1" %%a in ('dir /b sdi_r*.exe') do start %%a или - для 3-х символов после sdi_r for /f "tokens=1" %%a in ('dir /b sdi_r???.exe') do start %%a или просто задать переменную for /f "tokens=1" %%a in ('dir /b sdi_r???.exe') do set SDIname=%%a
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
17558conty9, Папка SDI_Update файлы SDI_R423.exe SDI_x64_R423.exe меняются версии после SDI_R как задать переменную на запуск SDI_R???.exe в авторском SDI_auto.bat уже так и сделано как conty9 написал http://nnm-club.me/forum/viewtopic.php?t=936087
|
SV-2k10
- Стаж: 9 лет 8 месяцев
- Сообщений: 266
- Репутация:21[+] [-]
|
Приветствую всех … ребят, у меня при запуске батника не закрывается консольное окно прописал так …Вреде гдето уже спрашивали,… посоветуйте что прописать – спасибо !
|
SV-2k10
- Стаж: 9 лет 8 месяцев
- Сообщений: 266
- Репутация:21[+] [-]
|
korsak7, Привет, этой и запускается. @echo off@echo off start /b /w CCleaner.exe /AUTO start /b /w Defraggler.exe exit Сами команды отрабатываю нормально, вторая программа запускается после отработки первой, и все отрабатывает хорошо – но вот окно консоли не закрывается …
|
|
SV-2k10, а как ты запускаешь бантик? Можно - cmd.exe /c bantic.cmd (закрыть окно после отработки), а можно cmd.exe /k bantic.cmd (не закрывать).
|
|
Пустые строчки - не при делах (они игнорируются). По поводу cmd: это интерпретатор комстроки. Чтобы посмотреть его команды, набираем: cmd /?. Запускать бантики через него - порой необходимость (не все программы "знают", что бантик запускается при его помощи - некоторые могут открыть бантик в блокноте, как обычный текст). По поводу SFX: для универсального использования и под х86, и под х64, лучше использовать такую прописку запуска (нужен относительно новый SFX-модуль): RunProgram="x86:hidcon:cmd /c start /b /w script.cmd" RunProgram="x64:hidcon:cmd /c start /b /w script.cmd" вместо (казалось бы, вполне логичного варианта) RunProgram="hidcon:cmd /c start /b /w script.cmd" Разница в том, что x64:hidcon:cmd - запустит х64-версию cmd. И, соответственно, получит нормальный доступ к папке System32. А вот hidcon:cmd под х64 запустит х86-версию cmd, и будет "видеть" только папку SysWOW64. Попутно еще уточню, что даже из х86-версии cmd можно, в принципе, запустить что-то из папки System32 под х64. Но для этого нужно указывать путь к ней иначе: cmd /c start %WinDir%\System32\notepad.exe - запустит 32-ю версию notepad.exe (т.е., под х86 - версию из папки System32, а для х64 - версию из папки SysWOW64... и если в последней notepad.exe нет - получим ошибку). А вот такой вариант: cmd /c start %WinDir%\SysNative\notepad.exe - под х64 запустит 64-ю версию notepad.exe (из папки System32)... но под х86 даст ошибку (папка SysNative отсутствует). Простенький универсальный вариант: if exist %WinDir%\SysWOW64 (set sys=SysNative) Else (set sys=System32) cmd /c start %WinDir%\%sys%\notepad.exe
Последний раз редактировалось: Гость (2016-01-30 12:27), всего редактировалось 3 раз(а)
|
Отправлено: 23-Июн-2016 17:02
(спустя 4 месяца 24 дня)
KopBuH91
- Стаж: 9 лет
- Сообщений: 382
- Репутация:55[+] [-]
- Откуда: Ташкент
|
Выкладываю здесь по просьбе участника форума:Определение параметров загрузки в WinPE (с помощью сценария командной строки) (можно в startnet.cmd):: Определение устройства загрузки (диск/сеть) FOR /F "tokens=3* delims=( " %%i in ('reg query HKLM\System\CurrentControlSet\Control /v PEBootType') DO SET PEBootType=%%i IF "%PEBootType%" == "Ramdisk:SourceIdentified" SET WINPEDEVICE=DISK IF "%PEBootType%" == "Ramdisk:SourceUnidentified" SET WINPEDEVICE=WINRE IF "%PEBootType%" == "Ramdisk:OpticalDrive" SET WINPEDEVICE=OPTICAL IF "%PEBootType%" == "Remote" SET WINPEDEVICE=REMOTE :: Определение типа загрузки (BIOS/UEFI/PXE) IF "%PEBootType%" == "Ramdisk:SourceIdentified" (FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') DO SET PEFirmwareType=%%i) IF "%PEBootType%" == "Ramdisk:SourceUnidentified" (FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') DO SET PEFirmwareType=%%i) IF "%PEBootType%" == "Ramdisk:OpticalDrive" (FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') DO SET PEFirmwareType=%%i) IF "%PEFirmwareType%" == "0x2" SET WINPEMODE=UEFI IF "%PEFirmwareType%" == "0x1" SET WINPEMODE=BIOS IF "%PEBootType%" == "Remote" SET WINPEMODE=PXE :: Определение IP адреса PXE сервера, с которого был загружен boot.wim (если загрузчик bootmgr от Microsoft) IF "%PEBootType%" == "Remote" (FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\System\CurrentControlSet\Control /v PEBootServerAddr') DO SET PXEServerIP=%%i) IF "%PEBootType%" == "Remote" (FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\System\CurrentControlSet\Control /v PEBootServerName') DO SET PXEServer=%%i) :: Определение производителя и модели материнской платы FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\HARDWARE\DESCRIPTION\System\BIOS /v BaseBoardManufacturer') DO (SET BaseBoardManufacturer=%%i) FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\HARDWARE\DESCRIPTION\System\BIOS /v BaseBoardProduct') DO (SET BaseBoardProduct=%%i) FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation /v SystemManufacturer') DO (SET SystemManufacturer=%%i) FOR /F "tokens=3* delims= " %%i in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation /v SystemProductName') DO (SET SystemProductName=%%i %%j) :: Запись значений производителя и модели материнской платы в окно свойств системы REG add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation" /t REG_SZ /v Manufacturer /d "%SystemManufacturer% (%BaseBoardManufacturer%)" /f REG add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation" /t REG_SZ /v Model /d "%BaseBoardProduct% / %SystemProductName% (%WINPEARCH% bit / %WINPEMODE%)" /f :: Поиск загрузочного носителя (папку-маркер "AdminPE" заменить на свою) SET PEBootRamdiskSourceDrive= FOR %%d IN (C D E F G H I J K L M N O P Q R S T U V W Y X Z) DO IF EXIST %%d:\AdminPE SET SourceDrive=%%d: FOR /F "tokens=1-3 delims== " %%a in ('reg.exe query "HKLM\SYSTEM\CurrentControlSet\Control" /v "PEBootRamdiskSourceDrive" 2^>nul') do (if %%a.==PEBootRamdiskSourceDrive. @set SourceDrive=%%~dc) IF "%WINPEDEVICE%" == "REMOTE" SET SourceDrive=X: :: Запись локальных переменных в глобальные переменные среды SETX SOURCEDRIVE "%SOURCEDRIVE%" SETX WINPEDEVICE "%WINPEDEVICE%" SETX WINPEMODE "%WINPEMODE%" SETX PXESERVER "%PXEServer%" SETX PXESERVERIP "%PXEServerIP%" SETX BaseBoardManufacturer "%BaseBoardManufacturer%" SETX BaseBoardProduct "%BaseBoardProduct%" SETX SystemManufacturer "%SystemManufacturer%" SETX SystemProductName "%SystemProductName%"
|
Отправлено: 27-Мар-2017 08:59
(спустя 9 месяцев 3 дня)
mlevon
- Стаж: 9 лет 1 месяц
- Сообщений: 65
- Репутация:0[+] [-]
|
В скрипте $OEM$\$$\Setup\SCRIPTS\SetupComplete.cmd записи идут start /wait %SystemDrive%\Install\7z32.msi /q такого характера пользуясь разделением на разрядность системы,Скрипт запускающий программу в зависимости от разрядности системы. Должен лежать рядом с программой. Код: @echo off if exist %WinDir%\SysWOW64 (start WinInstaller64.exe) Else (start WinInstaller32.exe) exit if exist %WinDir%\SysWOW64 (start WinInstaller64.exe) Else (start WinInstaller32.exe) Если в системной папке найдена папка SysWOW64 будет запущена программа WinInstaller64.exe, в противном случае WinInstaller32.exe. Kак правильнее будет, написать в отдельный батник скрипт на разделение разрядности и из setupcomplete.cmd вызывать разделительный батник? Или сразу проверку в setupcomplete.cmd писать проверку на разделение с запуском нужной разрядности
|
nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
mlevon Определение разрядности по SysWOW64 не совсем корректно, более правильно так: BAT/CMD для запуска версии программы 32-бит (х86) или 64-бит (х64) - проверяет разрядность ОС и в зависимости от этого запускает ту или иную версию программыset wininst=WinInstaller64.exe if /i %PROCESSOR_ARCHITECTURE%==x86 if not defined PROCESSOR_ARCHITEW6432 set wininst=WinInstaller32.exe start %wininst%
Последний раз редактировалось: nikzzzz (2017-03-27 12:29), всего редактировалось 1 раз
|
mlevon
- Стаж: 9 лет 1 месяц
- Сообщений: 65
- Репутация:0[+] [-]
|
39631mlevonОпределение разрядности по SysWOW64 не совсем корректно, более правильно так if /i %PROCESSOR_ARCHITECTURE%==x86 if not defined PROCESSOR_ARCHITEW6432 (start WinInstaller32.exe) else (start WinInstaller64.exe) Ок. Спасибо. И все таки, вернувшись к вопросу. Это писать в отдельном батнике, и его вызывать? Или в мейн батнике сразу?
|
Joker-2013
- Стаж: 9 лет 4 месяца
- Сообщений: 2053
- Репутация:120[+] [-]
- Откуда: из прошлого
|
mlevon, писать, где требуется запуск WinInstallerxx.exe...
|
Страница 2 из 8
Текущее время: 23-Ноя 13:06
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|