dem0n43
- Longevity: 9 years 9 months
- Posts: 65
- REPUTATION:2[+] [-]
- Location: ИзЗАДА
|
conty9, Папка SDI_Update файлы SDI_R423.exe SDI_x64_R423.exe меняются версии после SDI_R как задать переменную на запуск SDI_R???.exe
|
Guest
- REPUTATION:0[+] [-]
|
Опять пригодился 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
- Longevity: 10 years
- Posts: 1063
- REPUTATION: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
- Longevity: 9 years
- Posts: 267
- REPUTATION:21[+] [-]
|
Приветствую всех … ребят, у меня при запуске батника не закрывается консольное окно прописал так …Вреде гдето уже спрашивали,… посоветуйте что прописать – спасибо !
|
SV-2k10
- Longevity: 9 years
- Posts: 267
- REPUTATION:21[+] [-]
|
korsak7, Привет, этой и запускается. @echo off@echo off start /b /w CCleaner.exe /AUTO start /b /w Defraggler.exe exit Сами команды отрабатываю нормально, вторая программа запускается после отработки первой, и все отрабатывает хорошо – но вот окно консоли не закрывается …
|
Guest
- REPUTATION:0[+] [-]
|
SV-2k10, а как ты запускаешь бантик? Можно - cmd.exe /c bantic.cmd (закрыть окно после отработки), а можно cmd.exe /k bantic.cmd (не закрывать).
|
Guest
- REPUTATION:0[+] [-]
|
Пустые строчки - не при делах (они игнорируются). По поводу 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
Last edited by Guest on 2016-01-30 12:27; edited 3 times in total
|
Отправлено: 23-Jun-2016 17:02
(after 4 months 24 days)
KopBuH91
- Longevity: 10 years
- Posts: 382
- REPUTATION:55[+] [-]
- Location: Ташкент
|
Выкладываю здесь по просьбе участника форума:Определение параметров загрузки в 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-Mar-2017 08:59
(after 9 months 3 days)
mlevon
- Longevity: 9 years 3 months
- Posts: 65
- REPUTATION: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
- Longevity: 9 years
- Posts: 3114
- REPUTATION: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%
Last edited by nikzzzz on 2017-03-27 12:29; edited 1 time in total
|
mlevon
- Longevity: 9 years 3 months
- Posts: 65
- REPUTATION:0[+] [-]
|
39631mlevonОпределение разрядности по SysWOW64 не совсем корректно, более правильно так if /i %PROCESSOR_ARCHITECTURE%==x86 if not defined PROCESSOR_ARCHITEW6432 (start WinInstaller32.exe) else (start WinInstaller64.exe) Ок. Спасибо. И все таки, вернувшись к вопросу. Это писать в отдельном батнике, и его вызывать? Или в мейн батнике сразу?
|
Joker-2013
- Longevity: 9 years 6 months
- Posts: 2053
- REPUTATION:120[+] [-]
- Location: из прошлого
|
mlevon, писать, где требуется запуск WinInstallerxx.exe...
|
Page 2 of 8
Current time is: 14-Jan 05:59
All times are UTC + 3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|