Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Маленькие хитрости автоустановки

Ответить
Настройки темы
Маленькие хитрости автоустановки

(*.*)


Сообщения: 36572
Благодарности: 6702


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 07-06-2008
Описание: добавлены ссылки на статьи сайта
Маленькие хитрости автоустановки

Доброго времени суток!

Предлагаю собирать в этой теме маленькие хитрости, которые мы используем при создании диска автоустановки Windows (и приложений). Это могут быть скрипты или их элементы, утилиты с очень кратким описанием и примерами использования и т.д. Короче, всякие мелочи, которые упрощают вам жизнь и используются для оригинального решения различных задач во время автоустановки.

Если у вас есть под рукой источник, из которого вы почерпнули трюк, опубликуйте его - возможно, кто-то захочет получить дополнительную информацию из первоисточника. Если речь идет об утилите, то желательно дать ссылку на домашнюю страницу или любую другую страницу, откуда можно загрузить последнюю версию.

На сайте (new!):В Wiki:
Локальные правила темы
  1. Публикуйте каждую хитрость отдельным сообщением. Так будет легче сослаться на пост, если возникнет необходимость дать ссылку в другой ветке.
  2. Не нужно публиковать в теме твики реестра, за исключением тех случаев когда твик является неотъемлемой частью хитрости. Для твиков прикреплена отдельная тема.
  3. Не нужно задавать вопросы, не относящиеся к опубликованным в теме материалам. Если вы хотите что-то осуществить, но не знаете как - воспользуйтесь правилами создания тем на форуме. Такие вопросы будут удаляться без сожаления.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:26, 22-12-2005

 

Аватара для -MAXX-

Новый участник


Сообщения: 40
Благодарности: 2

Профиль | Отправить PM | Цитировать


пасибы за ответ, я уже разобрался (причём допетрил сам 8) )..
неправильно вызов делал - start /wait
изменил на call и всё получилось (пришлось почитать малёк про командную строку)

у меня вот какой вопрос - вывод в oeminfo.ini я делаю по маске *.exe из директории
%DVDROM%\I386\SVCPACK
Код: Выделить весь код
if defined CDROM (
  	set UPDATESDIR=%CDROM%\I386\SVCPACK
  	set UPDATESMASK=*.exe
получается нечто такое - ***KB925486 Q828026 qchain***
как исключить из листинга qchain ?
или назначить маски только для KB*.exe и Q*.exe ?

вообще перенести бы мои посты сюда - http://forum.oszone.net/post-495422.html#post495422
а то как-то не в тему.. сорри..

Последний раз редактировалось -MAXX-, 09-10-2006 в 15:32.


Отправлено: 11:44, 09-10-2006 | #81



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 628
Благодарности: 51

Профиль | Отправить PM | Цитировать


написал маленький батничек для смены буквы для CD\DVD драйвов, рассчитан на русскую WinXP (т.е. подразумевается что diskpart выводит информацию о томах на русском) буду рад если кто-нибудь из знатоков CMD оптимизирует.
Запускать последней командой из runonce
Цитата:
:cdassign
rem Создаем текстовый файл с информацией о томах
echo list volume > %temp%\dscript.txt
diskpart /s dscript.txt > %temp%\log.txt

rem Разбираем этот файл построчно, вызывая процедурку для нахождения томов с типом CD и DVD
FOR /F "skip=8 tokens=*" %%A IN (%temp%\log.txt) do @call :findCD "%%A"
del %temp%\log.txt
rem Создаем скрипт для diskpart
FOR %%B IN (%VOL1% %VOL2% %VOL3%) do (
set v=%%B
IF DEFINED v call :chCDlet %%B)
echo list volume >> %temp%\dscript.txt
rem Выполняем скрипт с записью лога работы в %temp%\log.txt
diskpart /s dscript.txt >> %temp%\log.txt
del %temp%\dscript.txt
goto END

:chCDlet
rem Присваиваем CDDVD драйвам в порядке очереди буквы XYZ
If %1==0 set let=X
If %1==1 set let=Y
If %1==2 set let=Z
rem Добавляем команды смены буквы в скрипт diskpart для каждого из драйвов
echo rem Change CDDVD Drive%1 Letter >> %temp%\dscript.txt
echo select volume %1 >> %temp%\dscript.txt
echo assign letter=%let% >> %temp%\dscript.txt
echo Буква CDDVD Привода (Том %1) будет изменена на %let% >> %temp%\log.txt
goto :EOF

:findCD
rem Высчитываем какие тома являются CD/DVD драйвами
rem Присваиваем им переменные VOL#
set line=%~1
set CDNUM=VOL1
IF DEFINED VOL1 set CDNUM=VOL2
IF DEFINED VOL2 set CDNUM=VOL3
If %line:~34,3%==DVD set %CDNUM%=%line:~4,1%
If %line:~34,2%==CD set %CDNUM%=%line:~4,1%
goto :EOF

:END
Подобным же образом можно менять буквы дисков для каких-то своих разделов, основываясь на метке тома этого раздела, можно и по другому, например я использую встроенную в winxp утилиту mountvol.exe

Последний раз редактировалось EgOrus, 18-10-2006 в 12:51.


Отправлено: 16:42, 17-10-2006 | #82


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


EgOrus
Цитата:
буду рад если кто-нибудь оптимизирует
добро... тогда вот что получилось, удалось обойтись без временных файлов:
Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

Rem Выделенные для приводов буквы
SET DRV_FREE=X Y Z

Rem Формируем список устройств, фильтруем переназначенные ранее
FOR /F "skip=9 tokens=*" %%A IN ('@echo list volume^|@diskpart') Do (
	SET LINE=%%A
	SET DRV_USED=!DRV_USED! !LINE:~13,1!
	CALL :FIND !LINE:~13,1! "%DRV_FREE%"
 	IF !ERRORLEVEL!==1 (
 		IF "DVD"=="!LINE:~37,3!" SET VOL_WORK=!VOL_WORK! !LINE:~7,1!
 		IF  "CD"=="!LINE:~37,2!" SET VOL_WORK=!VOL_WORK! !LINE:~7,1!
 	)
)

Rem Перебор отобранных приводов и выполнение переназначения
FOR %%B IN (%VOL_WORK%) DO (
	CALL :FindNext
	CALL :ASSIGN %%B !LTR!
	SET DRV_USED=!DRV_USED! !LTR!
)
EXIT

Rem Вызов команды назначения
:ASSIGN
(@echo select volume %~1&@echo assign letter=%~2)|diskpart
GOTO :EOF

Rem Вызов команды FIND
:FIND
@echo %~2|@find "%~1">nul
GOTO :EOF

Rem Поиск свободной буквы из заданного множества
:FindNext
For %%i in (%DRV_FREE%) Do (
	@echo.%DRV_USED%|Find "%%i">nul
	IF !ERRORLEVEL!==1 (
		SET LTR=%%i
		GOTO :EOF
	)
)
@echo Скрипт прерван. Список свободных букв исчерпан.
EXIT
ВАЖНО! В русском DiskPart положение значений сдвинуто относительно оригинального, мои смещения сделаны для английского варианта, поэтому нужно откорректировать вхождения на свои: ~7, - номер тома; ~37, - тип тома; ~13, - буква диска.

Последний раз редактировалось amel27, 19-10-2006 в 03:30.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:54, 18-10-2006 | #83


Ветеран


Сообщения: 628
Благодарности: 51

Профиль | Отправить PM | Цитировать


amel27
Респект, огромное спасибо, как-то даже в голову не пришло сразу использовать разбор вывода команды вместо файла. Мой батничек даже близко не стоит с тем, что сделал ты, ещё учиться и учиться

Отправлено: 16:19, 18-10-2006 | #84


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Сделайте кто-нибудь пожалуйста оптимизированный вариант для русской винды, а то я в cmd почти ноль :-(

Отправлено: 21:50, 08-11-2006 | #85


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата:
Сделайте кто-нибудь пожалуйста оптимизированный вариант для русской винды
Добавил автоопределение локализации и вынес типы переназначаемых устройств в заголовок. Если смещения изменятся теперь проще подкорректировать... Заменять старый вариант не стал если кто вдруг захочет разобраться в его работе или вдруг вылезет какая ошибка.
Код: Выделить весь код
echo off
SETLOCAL ENABLEDELAYEDEXPANSION
Rem Тип обрабатываемых приводов и выделенные для них буквы
SET DRV_TYPE=DVD CD
SET DRV_FREE=N O P
Rem Проверка наличия DiskPart
DiskPart.Exe /? >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
	Echo Файл DISKPART.EXE не найден, работа скрипта прервана!
	PAUSE
	EXIT
)
Rem Определение локализации DiskPart
DiskPart.Exe /?|Find "On computer:"
IF %ERRORLEVEL%==0 (
	SET POS_VOL=7
	SET POS_LTR=13
	SET POS_TYP=37
) ELSE (
	SET POS_VOL=4
	SET POS_LTR=10
	SET POS_TYP=34
)
Rem Формируем список устройств, фильтруем переназначенные ранее
FOR /F "skip=9 tokens=*" %%A IN ('@echo list volume^|@diskpart') Do (
	SET LINE=%%A
	SET DRV_USED=!DRV_USED! !LINE:~%POS_LTR%,1!
	CALL :FIND !LINE:~%POS_LTR%,1! "%DRV_FREE%"
 	IF !ERRORLEVEL!==1 FOR %%B IN (%DRV_TYPE%) DO CALL :TEST_DRIVE %%B
)
Rem Перебор отобранных приводов и выполнение переназначения
FOR %%B IN (%VOL_WORK%) DO (
	CALL :FindNext
	CALL :ASSIGN %%B !LTR!
	SET DRV_USED=!DRV_USED! !LTR!
)
EXIT
Rem Обработка очередной строки команды DiskPart "list volume"
:TEST_DRIVE
CALL :LENGTH %~1
IF "%~1"=="!LINE:~%POS_TYP%,%LENGTH%!" SET VOL_WORK=!VOL_WORK! !LINE:~%POS_VOL%,1!
GOTO :EOF
Rem Вычисление длины параметра
:LENGTH
SET LENBUF=%~1
SET LENGTH=0
IF "%~1"=="" GOTO :EOF
:LENGTH_START
SET /A LENGTH+=1
IF ""=="!LENBUF:~%LENGTH%,1!" GOTO :EOF
GOTO :LENGTH_START
Rem Вызов команды назначения
:ASSIGN
(@echo select volume %~1&@echo assign letter=%~2)|diskpart
GOTO :EOF
Rem Вызов команды FIND
:FIND
@echo %~2|@find "%~1">nul
GOTO :EOF
Rem Поиск свободной буквы из заданного множества
:FindNext
For %%i in (%DRV_FREE%) Do (
	@echo.%DRV_USED%|Find "%%i">nul
	IF !ERRORLEVEL!==1 (
		SET LTR=%%i
		GOTO :EOF
	)
)
@echo Скрипт прерван. Список свободных букв исчерпан.
EXIT

Последний раз редактировалось amel27, 11-11-2006 в 09:17. Причина: исправил очепятку

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:36, 10-11-2006 | #86


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


amel27 спасибо за батник :-)

а можно ли сделать так чтобы, этот батник форматировал все неотформатированные разделы в нтфс?
было бы очень удобно, при установке на новые компы :-)

PS: Где можно почитать про пакетные файлы(bat) ?

Отправлено: 13:01, 13-11-2006 | #87


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt RunOnceEx.cmd.txt
(3.2 Kb, 27 просмотров)
Тип файла: txt Regtweaks.reg.txt
(10.4 Kb, 27 просмотров)
Тип файла: txt WINNT.SIF.txt
(2.3 Kb, 32 просмотров)

Доброго времени суток. Я здесь новичёк. Может не в тот топик пишу. Просьба админов переместить куда надо.
У меня 2 небольших проблемы с дистрибом.
1. Не всегда переключаются раскладки клавиатуры как надо. Т.е. в некоторых приложениях переключаются нормально в некоторых вообще отказываются переключаться. В чём ошибка может быть, если не трудно ключиком или батником. (пс пунто свичер стоит и нормально робит, но я ставлю систему таким людям, которые даже не знают что это такое)
2. Не устанавливаются по дэфолту ип-адреса и проч. сетевые настройки. Устанавливается только воркгруппа.

И пара небольших вопросиков на засыпку - ни укого случайно ключиков нету к компасу 8(или хотя бы 7+), алкоголю (выскакивает сообщение о необходимости установки дров на рэйд) и ноду (как к нему обновления можно прикрутить сразуже).
Как очистить автозагрузку из папки all users?

PS РунОнс файл файл ответов и файл с твиками прилагаются - просто убрать расширение txt

Последний раз редактировалось Phanthom, 14-11-2006 в 00:24. Причина: Чуть не забыл - сиф файл


Отправлено: 00:17, 14-11-2006 | #88


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


jimmyboy
Цитата:
спасибо за батник
Цитата:
Где можно почитать про пакетные файлы(bat) ?
Всегда пожалуйста... вопрос уже поднимался тут: http://forum.oszone.net/thread-71179-2.html

Отправлено: 04:41, 14-11-2006 | #89


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


чета никак не разберусь как этот батник работает
инфы в инете про пакетные файлы мало нашел
может кто распишет как эта фиговина работает?
потом попробую переделать ее чтоб винты форматировала

Отправлено: 14:16, 16-11-2006 | #90



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Маленькие хитрости автоустановки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Маленькие скрипты на каждый день [mzd] Общий по Linux 26 09-03-2009 20:09
Прочее - Хитрости с сетью! <попытка отъесть полосу пропускания> Martion Сетевые технологии 8 11-12-2008 17:26
Разное - Хитрости Windows Vista Ydav Microsoft Windows Vista 1 05-04-2008 20:09
Internet Explorer 7 - "Советы и маленькие хитрости" OSZone News Новости и события Microsoft 3 02-04-2008 09:10
Маленькие окна браузера 4ay-nik Microsoft Windows 2000/XP 1 31-01-2007 22:25




 
Переход