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

    mlevon
  • 1606
  • Стаж: 2 года 1 месяц
  • Сообщений: 98
  • Репутация:0

    [+] [-]
Скидываю 2 решения, которые применил в SetupComplete.cmd
1. Проверка на разрядность операционной системы , с установкой какой нибудь програмы (в данном случае ставиться 7zip)
echo %PROCESSOR_ARCHITECTURE%|FINDSTR AMD64>NUL && start /wait %SystemDrive%\Install\7z64.msi /q || start /wait %SystemDrive%\Install\7z32.msi /q
2. Проверка операционной системы, если win 7 - то установи фреймворк, в другом случае(т.е если не 7) то установи к примеру 7zip ))
@echo off
for /f "tokens=*" %%i in ('systeminfo 2^>nul') do (
echo %%i|>nul findstr Windows&& set OS=%%i&& goto:#
)
:#
for %%i in (
7
10
) do (
set OS| >nul findstr /ilc:"Windows %%i"&& set OS=%%i
)
echo %OS%
if %OS%==7 (
start /wait %SystemDrive%\Install\framework462.exe /q
start /wait %SystemDrive%\Install\theme7.exe
)
if %OS%==10 (
start /wait %SystemDrive%\Install\theme10.exe
)
1 команду тестил с установкой 7zip, 2 команду только из под винды тестить успел, в setupcomplete еще не успел проверить, но под виндой норм работает
P.S. нашел сайт, на английском, где очень много разных вопросов по поводу скриптописания обусждено. Не уверен, что можно тут выкладывать , но все таки рискну. P.S.S Уважаемые инженеры, которые разбираются в скриптах, огромная просьба проверить скрипты на грамотность.


Последний раз редактировалось: mlevon (2017-04-11 08:11), всего редактировалось 1 раз

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

    sov44
  • 14940
  • Стаж: 11 месяцев 25 дней
  • Сообщений: 17
  • Репутация:1

    [+] [-]
  • Откуда: г. Киров
mlevon, ВАши скрипты никак не относятся к разряду "полезные CMD файлы". ИМХО - возможно нужна отдельная тема типа "Помогите с скриптами". Или приглашаю на этот форум, ветка cmd - http://www.cyberforum.ru/cmd-bat
Теперь по-сути:
- после start желательно ставить кавычки, пустые или с текстом между ними, в которых будет отражаться title командной строки. Например
start "Установка 7zip" /wait %SystemDrive%\Install\7z64.msi /q
- второй код написан для командной строки, а не для батника, удвойте процент перед переменной i

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

    mlevon
  • 1606
  • Стаж: 2 года 1 месяц
  • Сообщений: 98
  • Репутация:0

    [+] [-]
Привет всем. Есть ли какая либо возможность подхватывать папку OEM не рядом с install.wim, а из заданной папки ?

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

    ssanchess
  • 127
  • Стаж: 2 года 11 месяцев
  • Сообщений: 272
  • Репутация:11

    [+] [-]
  • Откуда: Из тайги
Приветствую господа! aa
Помогите пожалуйста чайнику со скриптом.
Есть комп, где работает КРМ Директор и ЭКЖ.
Есть батник, который делает бэкап БД на комп и копирует этот архив на сервер школы.
Хочу ещё сделать чтобы архив с бэкапом отправлялся на почту школы.
Подскажите как это сделать.
В инете нашёл скрипт для отправки, но у меня что-то не выходит.

Сам скрипт

Dim o_Mess, v_Conf
v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
Set o_Mess = CreateObject("CDO.Message")
With o_Mess
    .To = "********@mail.ru" 'куда отправляем
    .From = "********@mail.ru" 'Email отправителя
    .Subject = "БД" 'Тема письма
    .TextBody = "Копия БД" 'Сообщение
    .AddAttachment "D:\backup\*********.zip" 'Прикрепить файл
    .TextBodyPart.Charset = "windows-1251" 'русская кодировка
With .Configuration.Fields
    .Item(v_Conf & "sendusing") = 2 'без использования каталога Server Exchange
    .Item(v_Conf & "smtpserver") = "smtp.mail.ru" 'Адрес SMTP-сервера
    .Item(v_Conf & "smtpauthenticate") = 1 'Тип авторизации
    .Item(v_Conf & "sendusername") = "********@mail.ru" 'здесь имя пользователя
    .Item(v_Conf & "sendpassword") = "PASSWORD" 'пароль
    .Item(v_Conf & "smtpserverport") = 465 'порт (альтернативный - 465)
    .Item(v_Conf & "smtpusessl") = False 'использовать ли шифрованое подключение SSL
    .Item(v_Conf & "smtpconnectiontimeout") = 120 'Время до завершения повторных попыток подключения
    .Update
End With
    .send
End With
Set o_Mess = Nothing
Выскакивает ошибка

Что не так делаю.

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

    Ander_73
  • 15549
  • Стаж: 9 месяцев 18 дней
  • Сообщений: 187
  • Репутация:15

    [+] [-]
sanchess, например, я делаю так:
1. С сайта http://www.blat.net/ берём консольный транспорт
2. Создаем smtp.ini вида:
-to user@mail.ru -server smtp.mail.ru -u user -pw password -charset cp866
2. Ваяем бат-ника вида:
blat.exe log.txt -s "Backup report" -of smtp.ini -attach base.rar
И потом всё это запускаем после архивации.
smtp.ini нужен просто для удобства, все ключи можно прописывать прямо в командной строке. И в моём примере не хватает порта и типа авторизации. Думаю, это не сложно дописать, прочитав документацию по ключам.

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

    ssanchess
  • 127
  • Стаж: 2 года 11 месяцев
  • Сообщений: 272
  • Репутация:11

    [+] [-]
  • Откуда: Из тайги
Ander_73, aa
Спасибо. Буду разбираться и вникать.

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

    SunOK
  • 9
  • Стаж: 3 года
  • Сообщений: 483
  • Репутация:13

    [+] [-]
  • Откуда: Україна, Перлина Поділля
mlevon, ключ командной строки для Setup.exe
/m:%fullpath%\OEM
или
/m:%fullpath%\$OEM$
где %fullpath% - путь к папке, включая букву диска.

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

    mlevon
  • 1606
  • Стаж: 2 года 1 месяц
  • Сообщений: 98
  • Репутация:0

    [+] [-]
У меня установка идет с помощю скрипта
http://usbtor.ru/viewtopic.php?p=33024#33024
39976mlevon, ключ командной строки для Setup.exe
/m:%fullpath%\OEM
или
/m:%fullpath%\$OEM$
где %fullpath% - путь к папке, включая букву диска.
Куда это прикрутить, не знаю (если честно знаний не хватает ah )

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

    vovan1982
  • 214
  • Стаж: 2 года 9 месяцев
  • Сообщений: 807
  • Репутация:20

    [+] [-]
  • Откуда: Ростов-на-Дону
mlevon, замени красные строки

Вариант 1

@echo off
setlocal enabledelayedexpansion
SET fullpath=здесь прописать путь к OEM или $OEM$
SET DD=_WIN
SET MM=1032
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!DD!\!MM!
dir /d !IP!\install.wim&&set IN=!IP!\install.wim
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
dir /d !IP!\install.swm&&set IN=!IP!\install.swm
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder!
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %IP%\OEM\nul SET OEM=/m:%fullpath%\$OEM$
if exist %IP%\$OEM$\nul SET OEM=/m:%fullpath%\$OEM$
set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
exit

Вариант 2

@echo off
setlocal enabledelayedexpansion
SET DD=_WIN
SET MM=1032
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!DD!\!MM!
dir /d !IP!\install.wim&&set IN=!IP!\install.wim
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
dir /d !IP!\install.swm&&set IN=!IP!\install.swm
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder!
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %IP%\OEM\nul SET OEM=/m:%IP%\OEM - заменить на свой путь
if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$ - заменить на свой путь
set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
exit

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

    puhpol
  • 2
  • Стаж: 3 года
  • Сообщений: 1051
  • Репутация:26

    [+] [-]
mlevon, Приветствую! aa
39982У меня установка идет с помощю скрипта
Ну дык тама все есть:

скрипт

@echo off
setlocal enabledelayedexpansion
SET DD=_WIN
SET MM=1032
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!DD!\!MM!
dir /d !IP!\install.wim&&set IN=!IP!\install.wim
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
dir /d !IP!\install.swm&&set IN=!IP!\install.swm
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder!
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml

if exist %IP%\OEM\nul SET OEM=/m:%IP%\OEM
if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$

set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
exit

Выделенное синим - если рядом есть unattend.xml или _unattend.xml будут использованы в установке.
Выделенное красным - если рядом есть OEM или $OEM$ папки будут использованы в установке.
Не знаю по какой причине нужно искать оем папку в другом месте.... Проще изменить имя папки.
В противном случае - назначать еще одну переменную.

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

    mlevon
  • 1606
  • Стаж: 2 года 1 месяц
  • Сообщений: 98
  • Репутация:0

    [+] [-]
vovan1982, Спасибо большое. Сча попробую, отпишусь.
puhpol, Исходя из реализации, нужда такая, нужна 1 общая папка оем на 2 разных install.wim-а , в разных папках.
Я вот так менял. В 2 местах.
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %IP%\OEM\nul SET OEM=/m:%IP%\OEM
if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$
И не было подхвата папки ОЕМ. Сча попробую только во 2 части.

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

    puhpol
  • 2
  • Стаж: 3 года
  • Сообщений: 1051
  • Репутация:26

    [+] [-]
39986Исходя из реализации, нужда такая, нужна 1 общая папка оем на 2 разных install.wim-а , в разных папках.
Положите в одну папку несколько файлов install , назовите их как вам угодно и подправьте скрипт. Делов то.
Я заметил что этот скрипт почему то не кто не хочет изменять под свои нужды.Даже вот это:
SET DD=_WIN
SET MM=1032

Как прописал я когдато , так оно и не изменено не кем. А ведь не кто не мешает прописать путь в одной переменной.....
Пример:
В папке "W7" лежат два файла install . Один имеет имя lite.wim, второй install.esd.
Рядом два файла ответов: unattend.xml для install.esd , и Autounattend.xml для lite.wim
Так же для обеих установок общяя папка $OEM$.
Два скрипта запускающих установку:

Скрипт для lite.wim

@echo off
setlocal enabledelayedexpansion
SET MM=puhf\w7
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!MM!
dir /d !IP!\lite.wim&&set IN=!IP!\lite.wim
dir /d !IP!\lite.esd&&set IN=!IP!\lite.esd
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo НЕТУ ФАЙЛА LITE.WIM(ESD,SWM) по пути %MM%
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist %IP%\Autounattend.xml SET UN=/unattend:%IP%\Autounattend.xml
if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$
set ST=X:\sources\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause

Скрипт для install.esd

@echo off
setlocal enabledelayedexpansion
SET MM=puhf\w7
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!MM!
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo НЕТУ ФАЙЛА INSTALL.WIM(ESD,SWM) по пути %MM%
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$
set ST=X:\sources\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
Вариантов много....
З.Ы. И первый скрипт от vovan1982 работать не должон по моим ощущениям.... ah

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

    puhpol
  • 2
  • Стаж: 3 года
  • Сообщений: 1051
  • Репутация:26

    [+] [-]
Использую в SetupComplete для установки панели персонализации в индексы где отсутствует.
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | FINDSTR /i STARTER
IF NOT ERRORLEVEL 1 START /b /wait data\Panel.exe
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | FINDSTR /i BASIC
IF NOT ERRORLEVEL 1 START /b /wait data\Panel.exe

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

    mlevon
  • 1606
  • Стаж: 2 года 1 месяц
  • Сообщений: 98
  • Репутация:0

    [+] [-]
З.Ы. И первый скрипт от vovan1982 работать не должон по моим ощущениям.... ah
подхвата не было. винда установилась чистая.
Из boot.wim грузится оболочка, с 2 кнопками. Каждая кнопка вызывает скрипт
@echo off
setlocal enabledelayedexpansion
SET DD=Sources
SET MM=Win7
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!DD!\!MM!
dir /d !IP!\install.wim&&set IN=!IP!\install.wim
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
dir /d !IP!\install.swm&&set IN=!IP!\install.swm
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder!
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist X:\sources\unattend.xml SET UN=/unattend:X:\sources\unattend.xml
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %IP%\OEM\nul SET OEM=/m:%DD%\OEM
if exist %IP%\$OEM$\nul SET OEM=/m:%DD%\$OEM$
set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
:QUIT
exit
@echo off
setlocal enabledelayedexpansion
SET DD=Sources
SET MM=Win10
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!DD!\!MM!
dir /d !IP!\install.wim&&set IN=!IP!\install.wim
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
dir /d !IP!\install.swm&&set IN=!IP!\install.swm
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder!
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist X:\sources\unattend.xml SET UN=/unattend:X:\sources\unattend.xml
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %IP%\OEM\nul SET OEM=/m:%DD%\OEM
if exist %IP%\$OEM$\nul SET OEM=/m:%DD%\$OEM$
set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
:QUIT
exit
И нужна 1 оем папка, с тем же софтом, для 7 и для 10.
Положите в одну папку несколько файлов install , назовите их как вам угодно и подправьте скрипт. Делов то.
Я заметил что этот скрипт почему то не кто не хочет изменять под свои нужды.Даже вот это:
SET DD=_WIN
SET MM=1032
Как прописал я когдато , так оно и не изменено не кем. А ведь не кто не мешает прописать путь в одной переменной.....
Пример:
В папке "W7" лежат два файла install . Один имеет имя lite.wim, второй install.esd.
Рядом два файла ответов: unattend.xml для install.esd , и Autounattend.xml для lite.wim
Так же для обеих установок общяя папка $OEM$.
Два скрипта запускающих установку:
Думал, что название образа должно быть install.wim обьязательно.
P.S. Не судите строго, я чайник))))

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

    puhpol
  • 2
  • Стаж: 3 года
  • Сообщений: 1051
  • Репутация:26

    [+] [-]
39990 Не судите строго, я чайник))))
Я тоже....
vovan1982 в скрипте задает переменную, а поиск ее нет. Соответственно скрипт не находит ее....
Могу приблезительно нарисовать как оно приблизительно должно быть, но не уверен что правильно....
@echo off
setlocal enabledelayedexpansion
set n=здесь прописать путь к $OEM$
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir %%I:%n%

SET DD=_WIN
SET MM=1032
SET IN=NI
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set IP=%%I:\!DD!\!MM!
dir /d !IP!\install.wim&&set IN=!IP!\install.wim
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
dir /d !IP!\install.swm&&set IN=!IP!\install.swm
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder!
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %n%\$OEM$\nul SET OEM=/m:%n%\$OEM$
set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
exit
Изменено выделенное красным.
НЕ совсем уверен что правильно написал.... Смущает вот это: for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir %%I:%n%
Ниже используется такая же буква, а я не очень понимаю что оно значит....

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


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

Текущее время: 20-Ноя 06:59

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


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