[Цитировать]

    dem0n43
  • 556
  • Стаж: 9 лет 7 месяцев
  • Сообщений: 65
  • Репутация:2

    [+] [-]
  • Откуда: ИзЗАДА
conty9,
Папка SDI_Update файлы SDI_R423.exe SDI_x64_R423.exe
меняются версии после SDI_R как задать переменную на запуск SDI_R???.exe

[Цитировать]

    Гость
  • Репутация: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
  • 107
  • Стаж: 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
  • 437
  • Стаж: 9 лет 8 месяцев
  • Сообщений: 266
  • Репутация:21

    [+] [-]
Приветствую всех … ребят, у меня при запуске батника не закрывается консольное окно прописал так …
@echo off
exit
Вреде гдето уже спрашивали,… посоветуйте что прописать – спасибо !

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет
  • Сообщений: 1063
  • Репутация:62

    [+] [-]
какой строкой запускается батник?

[Цитировать]

    SV-2k10
  • 437
  • Стаж: 9 лет 8 месяцев
  • Сообщений: 266
  • Репутация:21

    [+] [-]
korsak7, Привет, этой и запускается.
@echo off
@echo off
start /b /w CCleaner.exe /AUTO
start /b /w Defraggler.exe
exit
Сами команды отрабатываю нормально, вторая программа запускается после отработки первой, и все отрабатывает хорошо – но вот окно консоли не закрывается …

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
SV-2k10, а как ты запускаешь бантик? Можно - cmd.exe /c bantic.cmd (закрыть окно после отработки), а можно cmd.exe /k bantic.cmd (не закрывать).

[Цитировать]

    SV-2k10
  • 437
  • Стаж: 9 лет 8 месяцев
  • Сообщений: 266
  • Репутация:21

    [+] [-]
korsak7, conty9, Спасибо ! всего то надо было убрать лишние пустые строчки – без вас бы не разобрался. ah
Раз я уже спросил, то объясни и это (cmd.exe /c bantic.cmd) на сколько я понял, это для запуска на прямую из ком строки, или из SFX архива ?


Последний раз редактировалось: SV-2k10 (2016-01-30 12:10), всего редактировалось 1 раз

[Цитировать]

    Гость
  • Репутация: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


Последний раз редактировалось: Гость (2016-01-30 12:27), всего редактировалось 3 раз(а)

[Цитировать]

    KopBuH91
  • 102
  • Стаж: 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%"

[Цитировать]

    mlevon
  • 1606
  • Стаж: 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
  • 215
  • Стаж: 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
  • 1606
  • Стаж: 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
  • 1039
  • Стаж: 9 лет 4 месяца
  • Сообщений: 2053
  • Репутация:120

    [+] [-]
  • Откуда: из прошлого
mlevon, писать, где требуется запуск WinInstallerxx.exe...

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
Поправил свое сообщение, была ошибка.

Страница 2 из 8


Показать сообщения:    

Текущее время: 23-Ноя 13:06

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы