![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Маленькие хитрости автоустановки |
|
Маленькие хитрости автоустановки
|
(*.*) Сообщения: 36572 |
Маленькие хитрости автоустановки Доброго времени суток! Предлагаю собирать в этой теме маленькие хитрости, которые мы используем при создании диска автоустановки Windows (и приложений). Это могут быть скрипты или их элементы, утилиты с очень кратким описанием и примерами использования и т.д. Короче, всякие мелочи, которые упрощают вам жизнь и используются для оригинального решения различных задач во время автоустановки. Если у вас есть под рукой источник, из которого вы почерпнули трюк, опубликуйте его - возможно, кто-то захочет получить дополнительную информацию из первоисточника. Если речь идет об утилите, то желательно дать ссылку на домашнюю страницу или любую другую страницу, откуда можно загрузить последнюю версию. На сайте (new!):
Локальные правила темы
|
|
------- Отправлено: 06:26, 22-12-2005 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста где можно скачать winrecab.rar и msretime.rar.
По ссылкам скачать не получается, архивы битые. |
Отправлено: 17:15, 20-11-2006 | #91 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Кто-нибудь может выложить утилитку CDEject.exe? В этой теме аттач битый, а в инете натыкался только на шараварные подобные проги.
|
Отправлено: 16:02, 03-12-2006 | #92 |
Старожил Сообщения: 387
|
Профиль | Отправить PM | Цитировать vlastan
Пожалуйста |
Отправлено: 16:05, 03-12-2006 | #93 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать qeraser, спасибо, но у меня она почему-то не срабатывает...запускал на компе из командной строки...перепробовал все команды. У кого-нибудь была подобная проблема?
|
Отправлено: 10:48, 04-12-2006 | #94 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать vlastan
Цитата:
; Читаем параметр командной строки и если обнаружен вызываем функцию, ; переменная окружения ERRORLEVEL устанавливается равной количеству ошибок ; (привод может быть заблокирован Nero или другой программой) $LastParm = $CmdLine[$CmdLine[0]] If $LastParm Then _CDEject ($LastParm) Exit (@error) EndIf ; Функция выброса трея CD/DVD привода ; в качестве параметра принимается буква диска или порядковый номер (по алфавиту), ; для обработки всех найденных приводов достаточно передать -1, ; по умолчанию применяется к первому найденному приводу. ; ; Возвращает количество успешно обработанных приводов, ; значение @error устанавливается равным количеству неудач, ; суммарное значение равно количеству обнаруженных приводов. Func _CDEject ($drive = 1) Local $i = 1, $err = 0, $aDrives = DriveGetDrive ("CDROM") If IsArray ($aDrives) Then For $i = 1 To $aDrives [0] If ($drive = -1) OR ($drive = $i) OR ($drive & ':' = $aDrives [$i]) Then If CDTray ($aDrives [$i], "open") =0 Then $err = $err +1 EndIf Next EndIf SetError ($err) Return $i - $err -1 EndFunc |
|
Отправлено: 12:38, 04-12-2006 | #95 |
Старожил Сообщения: 387
|
Профиль | Отправить PM | Цитировать vlastan
На msfn натыкался на CD_DVD_Switcher, попробуйте. Вот первоисточник Вариант от amel27 прост и легок. Я бы остановился на нем. |
Отправлено: 16:45, 04-12-2006 | #96 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Чтение структуры подкаталогов для создания значения ключа OemPnPDriversPath в winnt.sif.
Надоело значение этого ключа руками переделывать (ошибаюсь часто). Написал скрипт для этого, не знаю межет кто и делал что-то подобное. Вот текст vb-скрипта. 'Чтение аргумента коммандной строки Set objArgs = WScript.Arguments call readcatname (objArgs(0)) Function readcatname (folderspec) Dim fso, f, f1, s, sf Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(folderspec) Set sf = f.SubFolders For Each f1 in sf 'Проверка каталога на наличие файлов Dim fsofol, fl, fo Set fsofol = CreateObject("Scripting.FileSystemObject") Set fl = fsofol.GetFolder(f1.path) Set fo = fl.Files if fo.Count = 0 Then else 'Проверка существования лога Set fsoLogO = CreateObject("Scripting.FileSystemObject") if (fsoLogO.FileExists("folders.txt")) Then else fsoLogO.CreateTextFile "folders.txt" end if 'Запись имени каталога в файл Set fsoLog = fsoLogO.GetFile("folders.txt") Set ts = fsoLog.OpenAsTextStream(8,0) ts.Write f1 & ";" ts.Close end if 'Рекурсивный вызов функции call readcatname (f1.path) Next End function Внимание: программа тупая она не понимает сколько символов в названии каталога, так что проверяйте это сами. |
Отправлено: 11:30, 14-12-2006 | #97 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать ...тогда вот еще CMD-вариант решения проблемы построения OemPnPDriversPath:
@Echo Off SetLocal EnableDelayedExpansion :: Путь к каталогу с драйверами: Set ROOT=E:\Distrib\WiXPSP2\$OEM$\$1\OEMDRV PUSHD %ROOT% For %%i In ("%ROOT%") Do If Exist %%i (Set ROOT=%%~si&Set $R=%%~nxsi) Else Exit For /F "Delims=" %%i In ('DIR /B/S/A:D *') DO ( Set $D=%%~si If Exist !$D!\*.inf Set OemPnPDriversPath=!OemPnPDriversPath!;!$R!!$D:%ROOT%=! ) Echo %OemPnPDriversPath:~1% |
Последний раз редактировалось amel27, 15-07-2009 в 12:56. Причина: проверка наличия INF, раскраска Отправлено: 13:04, 14-12-2006 | #98 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Доделаный скрипт для построения OemPnPDriversPath
Теперь выдает готовую строку в файл folders.txt (переделывать ни чего не надо) Также выполняет проверку соответствия имен каталогов формату 8.3, если не соответствует сообщит где ошибка. Set objArgs = WScript.Arguments If objArgs.length = 0 Then MsgBox "Не задан каталог", 16, "Выполнение прервано" WScript.Quit End If Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(objArgs(0)) Then MsgBox "Каталог не существует", 16, "Выполнение прервано" WScript.Quit End If Set fsoLogO = CreateObject("Scripting.FileSystemObject") if (fsoLogO.FileExists("folders.txt")) Then Set fsoLog = fsoLogO.GetFile("folders.txt") fsoLog.Delete fsoLogO.CreateTextFile "folders.txt" else fsoLogO.CreateTextFile "folders.txt" end if Dim pfso, pf, psf, regEx Set pfso = CreateObject("Scripting.FileSystemObject") Set pf = pfso.GetFolder(objArgs(0)) Set psf = pf.Parentfolder Set regEx = New RegExp regEx.Pattern = "\\" regEx.IgnoreCase = True regEx.Global = True rpatrn = regEx.Replace(psf.path, "\\") regEx.Pattern = "\$" rpatrn = regEx.Replace(rpatrn, "\S") cn=0 call readcatname (objArgs(0), rpatrn) Function readcatname (folderspec, rpatrn) Dim fso, f, f1, s, sf, regEx Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(folderspec) Set sf = f.SubFolders For Each f1 in sf If UCase(f1.Name) <> UCase(f1.ShortName) Then MsgBox "Имя каталога не соответствует формату 8.3" & Chr(13) & f1.Path & Chr(13) & f1.Name,_ 16, "Выполнение прервано" WScript.Quit End If Dim fsofol, fl, fo Set fsofol = CreateObject("Scripting.FileSystemObject") Set fl = fsofol.GetFolder(f1.path) Set fo = fl.Files if fo.Count = 0 Then else Set fsoLogO = CreateObject("Scripting.FileSystemObject") Set fsoLog = fsoLogO.GetFile("folders.txt") Set ts = fsoLog.OpenAsTextStream(8,0) Set regEx = New RegExp regEx.Pattern = rpatrn & "\\" regEx.IgnoreCase = True sname = regEx.Replace(f1 , "") if cn = 0 Then cn = 1 else ts.Write ";" End If ts.Write sname ts.Close End if call readcatname (f1.path, rpatrn) Next End function |
Отправлено: 05:23, 15-12-2006 | #99 |
Старожил Сообщения: 214
|
Профиль | Отправить PM | Цитировать amel27
Цитата:
Правда, не помню, к каким версиям Виндов применимо... |
|
Отправлено: 17:56, 24-12-2006 | #100 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочее - Маленькие скрипты на каждый день | [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 |
|