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

    mlevon
  • 1606
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 65
  • Репутация:0

    [+] [-]
НЕ совсем уверен что правильно написал....
ak Я в этом вообще не разбираюсь. Мысль понял.
Смущает вот это: 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%
Мне кажется тут I это переменный индекс цикла проверки. Но вот что дальше, не понимаю.

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

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
puhpol, простите, что вмешиваюсь
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%
Смысл этой строки - поиск устройства. Т.е. после команды dir надо проверять errorlevel.
Например, так:
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 OEMPath=%%I:%n%&goto Success)
echo Устройство не найдено!&exit
:Success
Теперь у нас в переменной OEMPath находится полный путь к $OEM$

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

    mlevon
  • 1606
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 65
  • Репутация:0

    [+] [-]
Теперь у нас в переменной OEMPath находится полный путь к $OEM$
В таком случае, во второй части скрипта
if exist %n%\$OEM$\nul SET OEM=/m:%n%\$OEM$
как должно быть?

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

    vovan1982
  • 214
  • Стаж: 9 лет 2 месяца
  • Сообщений: 1098
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
puhpol, да на скорую руку сваял. Да нужно поиск организовать.

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

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
У нас получился сломанный телефон. Я ответил puhpol, а он просто вырвал строку из правильного контекста :)
Проблема исходных скриптов в том, что они жёстко задают путь поиска. А именно:
SET DD=_WIN
SET MM=1032
SET IN=NI
...
set IP=%%I:\!DD!\!MM!
То есть мы ВСЕГДА ищем install.* по пути X:\_WIN\1032\

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

    mlevon
  • 1606
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 65
  • Репутация:0

    [+] [-]
@echo off
setlocal enabledelayedexpansion
SET n=Sources
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 OP=%%I:%n%&goto Success)
echo Could not find oem folder!&exit
:Success

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 %OP%\OEM\nul SET OEM=/m:%OP%\OEM
if exist %OP%\$OEM$\nul SET OEM=/m:%OP%\$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
Вот в таком виде не подхватывает папку оем.

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

    vovan1982
  • 214
  • Стаж: 9 лет 2 месяца
  • Сообщений: 1098
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
mlevon, и не подхватит. Забыл слэш поставить
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 OP=%%I:\%n%&goto Success)

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

    mlevon
  • 1606
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 65
  • Репутация:0

    [+] [-]
A нижняя часть в норме?
if exist %OP%\OEM\nul SET OEM=/m:%OP%\OEM
if exist %OP%\$OEM$\nul SET OEM=/m:%OP%\$OEM$

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

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
\nul убери
или замени на >nul

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

    vovan1982
  • 214
  • Стаж: 9 лет 2 месяца
  • Сообщений: 1098
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
Ander_73, зачем \nul убирать? Это значит идет проверка наличия папки, а не файла.

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

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
зачем \nul убирать? Это значит идет проверка наличия папки, а не файла.
Просто бессмысленная конструкция, if exist не отличает папки от файла.
Впрочем, мой совет про >nul - такой же ab

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

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
Господа Спасибо, Я вас понял.
mlevon
Значит мой вариант должон отработать.
З.Ы. Они вам сейчас весь мозг склюют. И из скрипта в две строки сделают 20. al

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

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
39998То есть мы ВСЕГДА ищем install.* по пути X:\_WIN\1032\
Бред какой -то, С чего вы взяли X: .....
Спорить не буду, я ламер.

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

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
puhpol, Х - надо же было чем-то заменить букву диска ag
А всё остальное - из тела скрипта.

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

    mlevon
  • 1606
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 65
  • Репутация:0

    [+] [-]
В 1 сообщении подправленный 2 код. Тестил, работает.

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


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

Текущее время: 28-Мар 17:18

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


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