Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   Маленькие хитрости автоустановки (http://forum.oszone.net/showthread.php?t=58418)

Vadikan 22-12-2005 06:26 385680

Маленькие хитрости автоустановки
 
Маленькие хитрости автоустановки

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

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

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

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

Vadikan 22-12-2005 06:27 385681

Пауза в пакетном файле
 
Пауза в пакетном файле

Vadikan 22-12-2005 06:30 385682

Перезагрузка компьютера
 
Перезагрузка компьютера

Vadikan 22-12-2005 06:31 385683

Добавление папки в PATH
 
Добавление папки в PATH

Vadikan 23-12-2005 08:25 386041

Скрываем консольные окна

Vadikan 26-12-2005 06:28 386794

Как назначить переменную папке C:\Documents and Settings

Пожалуй, самый короткий путь предложил EgOrus здесь:
Код:

SET dir=%AllUsersProfile%
SET mydir=%dir:~0,-10%

Первая строка создает переменную dir равную %AllUsersProfile%. Последняя в свою очередь разбирается как Х:\Documents and Settings\All Users (Х - буква диска). Вторая строка создает переменную mydir, которая получена вырезанием из переменной dir нуля (0) символов с начала и десяти (10) символов с конца. Строго говоря, ноль можно было опустить. Если отнять от Х:\Documents and Settings\All Users последние десять символов, то и получится искомая переменная X:\Documents and Settings

Данная переменная действительна только в течении данной cmd сессии и не является постоянной.

Как назначить переменную папке C:\Documents and Settings (II)

Есть проблема, которая может возникнуть при использовании предыдущего метода: папка %ALLUSERSPROFILE% была перемещена с какой-либо целью. В таком случае, путь к директории профилей может оказаться ложным. Тогда надо брать значение из реестра. Зайдите в ветку реестра и посмотрите какие там значения параметров.
Код:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
Их можно использовать
Код:

@echo off

:: Get the profiles directory from the registry
for /f "usebackq tokens=3,3* delims==        " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%%i

:: Set the profiles dir as %profiles%
for /f "usebackq delims==" %%i in (`echo %profiles%`) do set profiles=%%i

:: Result
echo %profiles%
pause
exit


Boa Soft 26-12-2005 12:57 386869

Вложений: 1
Если необходимо одинаково настроить рабочий стол (расположение иконок) на большом количестве компьютеров, то можно воспользоватся приаттаченной утилитой - DeskSaver.exe

После настройки на эталонном компьютере запускаем DeskSaver.exe s
Копируем утилиту и полученный файл настроек DeskSaver.ini на остальныее компьютеры и запускаем DeskSaver.exe r
Значьки будут выстроенны как на эталонной машине.

Внимание! Запускать надо только после инициализации рабочего стола, например из

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

Внимание2! С read-only носителя не работает - оно выгружает из ресурса dll, отрабатывает действие и удаляет ее. Зато оди файл.

PS Возможно и другое применение - при наличии детей или в школе закинуть прогу в атозагрузку и бардак на рабочем столе будет ликвидирован автоматом.

PSS Извиняюсь за ошибку. Вложение было с мусором - сейчас исправил. Там действительно то, что надо!

specialist 29-12-2005 14:28 387860

Переменные среды (обсуждение)

Shido 03-01-2006 12:10 388869

Замена Boot Screen-на создаём файл с картинкой 640x480 16-цветный под именем boot.bmp в папке WINDOWS и правим boot.ini в корневом каталоге диска: приводим к следующиму виду.

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect /noguiboot /bootlogo

Очень удобно так как не приходится править ядро (да и не каждый сумеет), плюс не зависит от текущей версии WINDOWS. Как исправить файлик и добавить картинку в автоматическом режиме, думаю объяснять не надо? :-)

MKN 05-01-2006 11:01 389408

Кто подскажет - как сделать такую "хитрость" чтобы после завершения автоустановки просигналил динамик компьютера?

bodro 07-01-2006 13:44 389991

Запуск RunOnceEx с CD

Внесение переменной %i% избавляет от необходимости менять ключи при перестановке или добавлении программ в файл RunOnceEx.cmd


Подробнее: Запуск RunOnceEx с CD

Boa Soft 08-01-2006 18:32 390349

Вложений: 1
Цитата:

Кто подскажет - как сделать такую "хитрость" чтобы после завершения автоустановки просигналил динамик компьютера?
Прописать в пакетный файл автоустановки последней строкой вызов приаттаченой утилиты

Код:

first install command
second install command
.....
beeper.exe


За звук не пинайте - написано за 5 минут, когда не смог найти в запасах готовой утилиты.

bodro 10-01-2006 01:19 390683

Выдвинуть каретку CD-ROM после установки
 
Вложений: 1
Выдвинуть каретку CD-ROM после установки

Программа CDEject.exe предназначена для открытия-закрытия CD -привода (CD-ROM, CD-R, CD-RW).
Программа может работать с несколькими CD, причем может делать это одновременно за один запуск.
Программа запускается из командной строки.

D@nil 10-01-2006 15:04 390818

Вложений: 1
Oemlogo.bmp и oeminfo.ini автоматом

Код:

$OEM$\oemlogo.bmp
$OEM$\oemlogo.cmd
$OEM$\oemlogo.gif

cmdlines.txt
Код:

[COMMANDS]
oemlogo.cmd

oemlogo.cmd
Код:

cmdow @ /HID
@echo off
SET D=%SYSTEMROOT%\system32\
copy oemlogo.bmp %d%oemlogo.bmp
echo [General] > "%D%oeminfo.ini"
echo Manufacturer=Автор версии : D@nil >> "%D%oeminfo.ini"
echo Model=Корпоративная Версия >> "%D%oeminfo.ini"
echo [Support Information] >> "%D%oeminfo.ini"
echo Line1=Дата установки системы : %date% >> "%D%oeminfo.ini"
echo Line2= >> "%D%oeminfo.ini"
echo Line3=Время установки системы : %time% >> "%D%oeminfo.ini"
echo Line4= >> "%D%oeminfo.ini"
echo Line5=Установленные обновления : >> "%D%oeminfo.ini"
echo Line6= >> "%D%oeminfo.ini"
SET i=7
ATTRIB -H -S -R %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\KB*.cat
For /F "tokens=1* delims=." %%k in ('dir "%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\KB*.cat" /b') do ( (set kbname=%%k) & (call :myprint) )
GOTO :EOF
:myprint
echo Line%i%=%kbname% >> "%D%oeminfo.ini"
SET /A i=%i%+1
:EOF

oemlogo.gif

YuriPet 15-01-2006 17:06 392687

Вложений: 1
Для тех, кто проживает не в России, но предпочитает использовать программное обеспечение с русским интерфейсом.

Многие инсталляторы и программы пытаются самостоятельно установить язык интерфейса в соответствии с системными установками Windows. В то же время, для работы в Интернете и некоторых других целей необходимо указывать свое действительное местонахождение.

Попытаться разрешить это противоречие можно, использовав приведенные фрагменты.

В файле WINNT.SIF задаем русский языковый стандарт, свой часовой пояс и необходимые раскладки клавиатуры, а также свои "телефонные координаты":
Код:

[GuiUnattended]
TimeZone = 130
OEMSkipRegional = 1
 
[RegionalSettings]
SystemLocale = 00000419
UserLocale = 00000419
InputLocale = 0409:00020409,0419:00000419,0422:00000422
 
[TapiLocation]
CountryCode=380
Dialing=Tone
AreaCode=057

В файле HKCU.REG (установки, импортируемые в реестр при первом входе в систему) задаем остальное:
Код:

Windows Registry Editor Version 5.00
;---------------------------------------------
;"Правильная" локализация
;---------------------------------------------
 
;Задать свое "Расположение" (у меня - Украина)
[HKEY_CURRENT_USER\Control Panel\International\Geo]
"Nation"="241"
 
;Задать национальную валюту и способы ее отображения (у меня - гривня)
[HKEY_CURRENT_USER\Control Panel\International]
"iCurrency"="3"
"iNegCurr"="8"
"sCurrency"="грн."

Получим, как на вложеной картинке

bodro 18-01-2006 03:15 393872

Замена иконки 7z sfx архива. Придание инсталлятору подобающего вида.

Вокруг да около ходили много, но по-моему так никто подробно и не раскрывал суть вопроса: Как вставить в создаваемый вами дистрибутив на основе 7z sfx модуля свою иконку?

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

Итак, для начала остановимся на необходимом программном обеспечении. Можно использовать множество программ для тех или иных целей, но я остановлюсь на тех, которыми пользовался сам - редактор ресурсов Resource Hacker и редактор иконок AWicons Pro. Русскую версию первого лучше всего взять на сайте www.samlab.ws а второй поискать с помощью какого-нибудь поисковика.

Итак, приступаем к работе:
- устанавливаем, регистрируем... короче добиваемся работоспособного состояния вышеназванных программ.
- запускаем Resource Hacker. Файл - Открыть - выбираем в нем любой исполняемый файл, иконку из которого требуется вытащить.
- идем в пункт Icon Group и находим в одной из его подпапок требуемый ресурс иконок (их может быть несколько - нужную нам группу выбираем визуально, смотря на отображающиеся в правой части окна программы иконки).
- нажимаем на нем правой кнопкой мыши и выбираем пункт меню Сохранить [Icon Group: ....], далее указываем путь и имя файла иконок.
- поскольку в получившемся файле иконок их очень много а нам хочется чтобы размер дистрибутива практически не увеличился, нам теперь нужно убрать лишние иконки из этого файла. Я воспользовался программой AWicons Pro - открыл файл извлеченных на предыдущем этапе иконок и нажимая последовательно на одной за другой иконках правой кнопкой мыши, выбирал в контекстном меню Удалить, пока не осталось всего две нужных мне иконки - 16Х16 и 32Х32 точки 32-битного цвета и сохранил этот обрезанный ресурс.
- далее снова открываем Resource Hacker. Файл - Открыть (тип файлов - Все файлы) выбираем наш модуль 7z sfx (он должен быть несжатым упаковщиком upx, если сжат - распаковать командой upx -d your_sfx.sfx, а после подмены иконок - запаковать командой upx --best your_sfx.sfx ;естесственно, что в этом случае заранее скачанный вами упаковщик upx должен находиться в одной папке с упаковываемым 7z sfx модулем) и жмем кнопку Открыть.
- снова заходим в пункт Icon Group, находим там подпапку с искомым ресурсом иконок, и нажав на самом ресурсе иконок правой кнопкой мыши из контекстного меню выбираем пункт Заменить ресурс ...
- в открывшемся окне щелкаем по кнопке Открыть значок, выбираем файл иконок, который был до этого предварительно обрезан и щелкаем по кнопке Заменить и далее Закрыть.
- после проделанных действий можно нажать Файл - сохранить как ... и указав нужную папку и имя вашего нового 7z sfx модуля выйти из программы.
- нужно убедиться что программа не забыла дописать расширение файла .sfx а если забыла дописать его ручками
- далее из командной строки или с помощью заботливо созданного командного файла следующего содержания COPY /b your_sfx.sfx + your_config.txt + your_7z.7z your_install.exe
где:
your_sfx.sfx - вами замучанный 7z sfx модуль
your_config.txt - вами созданный файл конфигурации модуля 7z sfx
your_7z.7z - ваш 7z архив с программой
your_install.exe - ваша получающаяся на выходе инсталляшка
вы сможете получить ваш инсталляционный файл с красивой иконкой!
Удачи!

http://forum.oszone.net/showpost.php...7&postcount=18

amel27 27-01-2006 11:53 397746

Вложений: 1
Актуализация времени CAB-архивов в дистрибутивах Windows

Может кто не знает но первые версии мелкософтовской тулзы compress.exe устанавливали метку времени упакованного файла равной метке исходного файла. В этом есть своя логика - так значительно упрощается сравнение содержимого каталогов средствами файловых менеджеров, (например, для отслеживания работы различных "интеграторов"). Другие инструменты - MakeCab и CabArc устанавливают метку равной времени создания архива. Поэтому пришлось написать короткий скрипт, восстанавливающий метку времени из содержимого архива.

Среди многообразия утилит Microsoft не нашел ни одной, позволяющей устанавливать метку времени или копировать ее между файлами. Однако для этих целей вполне подойдет утилита Touch, портированная из Unix. Через Google можно найти не один вариант такого порта, причем с исходниками. Есть еще один выход - средствами AutoIT написать свой скриптовый аналог Touch. У такого способа есть свои преимущества - унификация формата даты и полный контроль над процессом. В предложенном скрипте использован последний вариант (утилита TimeCopy).

Для получения справки запустите cmd-файл без параметров.

samsobi 30-01-2006 11:12 398849

Vadikan
Сайт http://www.nirsoft.net глубоком дауне наверное 8-((. И поисковики все ссылаются на него. А посмотреть было бы интересно, м/б выложишь на oszone или где удобней?

YuriPet 30-01-2006 12:04 398875

samsobi
Вот только сейчас проверил - http://www.nirsoft.net "летает" :)!

Proektor 01-02-2006 13:35 399636

Подскажет кто-нибудь как можно из командной строки (или через реестр) переименовать раздел?

ShaddyR 01-02-2006 14:09 399642

Proektor: а другой ничего спросить здесь ты не хочешь? Там, про Касперсого часто интересуются, про Как_заработать_деньги... тоже можешь спросить в теме
Цитата:

Маленькие хитрости автоустановки
>:|

label Диск:


bodro 03-02-2006 21:14 400529

Как сделать инсталляцию сложной (вносит много переменных с ссылками на файлы и пр.) программы которая не поддерживает unattended ключи

1. Устанавливаем Symantec AutoInstall запускаем AISnapshot в Options удаляем все диски затем нажемаем ADD выбираем папки "Documents and Settings" и "Windows", нажемаем browse выбираем "Мои документы" нажемаем OK > Далее (Ждем...) > Next вводим название программы (скажем winamp_auto) окно не закрываем и переходим к пункту 2

2. Устанавливаем нужную Вам программу (например winamp) русифицируем, регестрируем, делаем в ней нужные настройки....

3. Выбираем откытое окошко программы AISnapshot и нажемаем Compare (Ждем...) > Build > Готово

4. Берем файл c названием Вашей программы (winamp_auto.exe) из папки Мои документы и копируем в папку с установленной только что Вами программой (C:\Program Files\Winamp), затем в папке с программой (C:\Program Files\Winamp) выделяем все файлы и делаем SFX архив с параметрами: путь распаковки - "%ProgramFiles%\Winamp", после распаковки запустить - "%ProgramFiles%\Winamp\winamp_auto.exe"

amel27 12-02-2006 07:26 405664

Вложений: 1
Уменьшение размера дистрибутива. Переупаковка файлов.

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

Обработка CAB-файлов может проводиться двумя способами - штатным MakeCab, или же CabArc из CAB SDK, оба варианта доступны в скрипте. CabArc (в отличие от MakeCab) поддерживает вложенные каталоги, зато архивы упакованные MakeCAB имеют более короткое время доступа (по данным msfn.org). Поэтому в скрипте предпочтение отдано именно 1-му способу, в случае неудачи (наличие подкаталогов) вызывается 2-й способ.

Для получения краткой справки запустите пакетный файл без параметров.

Внимание! Windows XP/2003 комплектуется версией MakeCab, изменяющей метку времени исходного файла и устанавливающей ее равной времени архива! Совершенно не понимаю чем вызвано такое поведение… если дело пойдет так и дальше, то атрибут метки времени может вовсе утратить свою значимость. В результате работы скрипта с таким MakeCab может случиться ситуация когда метка архива актуальней метки самого файла. Воизбежание проблем для операций с архивами лучше всегда использовать один набор утилит, например из Microsoft CAB SDK.

Предостережение! Командные файлы содержат процедуры по массовой обработке файлов и каталогов, в том числе команды удаления, перемещения и т.д. Нет гарантий, что в разных условиях скрипт будет вести себя одинаково. Поэтому крайне рекомендую все операции с дистрибутивами проводить только на виртуальном диске, перенаправив рабочую папку при помощи штатной команды SUBST, например:
Код:

subst w: c:\WRK

amel27 12-02-2006 10:22 405685

Вложений: 1
Уменьшение размера дистрибутива. Упаковка после интеграции хотфиксов.

Нынче практически все выпускаемые Microsoft хотфиксы поддерживают интеграцию в дистрибутив (ключ /integrate). Одно неудобство - все обновленные файлы остаются в неупакованном виде. Предлагаю вариант скрипта который сравнивает обновленный дистрибутив (QFE) с оригиналом (RTM) и упаковывает только те файлы, которые до обновления хранились в сжатом виде. Упаковка совмещена с актуализацией времени (утилита TimeCopy).

Для получения краткой справки запустите пакетный файл без параметров.

Fanzuga 16-02-2006 07:32 407097

Уменьшение размера дистрибутива

После интеграции в дистрибутив Windows XP SP1 Service Pack 2 (а такой "самодельный" дистрибутив весьма распространен),
от предыдущего SP1 остаются файлы SP1.cab и SP1.CAT (ок 10 Мб), которые можно (и нужно) совершенно безболезненно удалить.
Никаких дополнительных махинаций не требуется.

Softwarez777 16-02-2006 14:31 407230

Цитата:

можно смело применять 1-й способ, подправив соответствующую строчку в скрипте (выделена пунктиром).
Можно поподробнее, как подправить для первого способа ? а то ругается всё время ...

amel27 16-02-2006 17:11 407290

Цитата:

Можно поподробнее, как подправить для первого способа ?
Заменить в вызове процедуры "CALL :RECAB.2" на "CALL :RECAB.1" (в последней редакции)
Цитата:

а то ругается всё время ...
На что ругается? Вывести лог в файл и выслать мылом, пример:
Код:

winrecab WXPSP2 >winrecab.log 2>&1

Boa Soft 17-02-2006 02:23 407430

Vadikan

Цитата:

Утилита hidcon
В командной строке указывается имя исполняемого файла и его командная строка. Например,
А из Cmdlines это применимо?

Я пробовал положить hidcon в $OEM$ и вызавать примерно так

Код:

"hidcon oemlogo.cmd"
При этом oemlogo.cmd тоже лежал в $OEM$ и в таком виде

Код:

"oemlogo.cmd"
Вызывался нормально.

Oleg_Sch 17-02-2006 03:43 407436

Boa Soft
Из папки $OEM$ запускать не пробовал. Я его копирую в папку windows (т.е. он у меня лежит в $OEM\$$) - этот вариант работает, про другие не скажу, но мне кажется должно работать.
Вот мой реальный cmdlines.txt
Код:

[Commands]
"regedit /s custom.reg"
"hidcon defuser.cmd"
"T12.exe"


amel27 17-02-2006 10:55 407544

Вложений: 1
Хранение дистрибутивов: экономим место на жестком диске.

При создании установочных образов на жестком диске может скапливаться множество дистрибутивов различных ОС разных редакций в разном состоянии, которые занимают приличный объем. Не секрет, что место при этом расходуется весьма неэффективно, так как значительная часть файлов при этом дублируется. Есть как минимум два способа решения проблемы:

1. Задействовать службу SIS (Single Instance Storage), которая входит в комплект RIS (Remote Install Services). При этом минимальной обслуживаемой единицей будет том, назначаемый при установке RIS. Главное достоинство этого варианта - автоматическое (фоновое) отслеживание дублей на томе. Недостатки - доступна только в серверных редакциях Windows, замедляет работу с выделенным для этих целей томом.

2. Использовать жесткие ссылки файловой системы NTFS, при этом минимальной единицей может быть файл. Недостаток - создание ссылок придется кодить самостоятельно или приноравливаться к доступным утилитам, например LN (GNU, порт из UNIX). Но мне приглянулась другая утилита - XLN, на основе которой и написал простой командный файл, сканирующий выделенный каталог на предмет наличия в нем одинаковых файлов и заменяющий дубликаты жесткими ссылками.

Естественно, что одинаковые файлы должны быть и сжаты одинаково. Поэтому ИМХО есть смысл пережать дистрибутивы заново.

P.S. Не хочу создавать отдельный "секрет", просто обратите внимание что XLN способна также создавать и обычные ярлыки.

Softwarez777 17-02-2006 23:44 407846

По уменьшению размера дистрибутива ...
С ошибками разобрался, но скрипт всё равно нерабочий - набольших кабах просто закрывается без каких-либо следов ... ;(

Boa Soft 18-02-2006 01:48 407875

Цитата:

Из папки $OEM$ запускать не пробовал. Я его копирую в папку windows (т.е. он у меня лежит в $OEM\$$) - этот вариант работает, про другие не скажу, но мне кажется должно работать.
Спасибо. Я просто подозревал, что из $OEM$ путь не находит, а так нормально будет.

amel27 18-02-2006 07:24 407910

Цитата:

С ошибками разобрался, но скрипт всё равно нерабочий - набольших кабах просто закрывается без каких-либо следов ... ;(
У меня пока пашет без ошибок. Какой текст ошибки, какая ось и какой CAB? Извиняюсь за навязчивость, но ошибки нужно исправлять... для этого собственно и выложил.

ANDYru 18-02-2006 10:03 407924

ну чтож и я поделюсь полезняшкой

создаем файл PasteClipBoard.bat c содержимым :
Код:


@echo off

if {%1}=={} @echo Syntax: PasteClipBoard content&goto :EOF

if exist "%TEMP%\PasteClipBoard.vbs" goto doit

@echo Dim objArgs>"%TEMP%\PasteClipBoard.vbs"

@echo Set objArgs = Wscript.Arguments>>"%TEMP%\PasteClipBoard.vbs"

@echo Content = objArgs(0)>>"%TEMP%\PasteClipBoard.vbs"

@echo Set objIE = CreateObject("InternetExplorer.Application")>>"%TEMP%\PasteClipBoard.vbs"

@echo objIE.Navigate("about:blank")>>"%TEMP%\PasteClipBoard.vbs"

@echo objIE.document.parentwindow.clipboardData.SetData "text", Content>>"%TEMP%\PasteClipBoard.vbs"

@echo objIE.Quit>>"%TEMP%\PasteClipBoard.vbs"

:doit

cscript //nologo "%TEMP%\PasteClipBoard.vbs" %1


запускаем PasteClipBoard.bat "Этот текст попадёт в буфер обмена"

вот собственно иногда просто не заменимая вещь для автоустановок , когда необходимо учитывать раскладку клавы по умолч., капслук, и возможное наличие пунтосвитчера - а этим приёмом эти устовия безразлисны

amel27 19-02-2006 04:38 408229

Подправил алгоритм winrecab.cmd... Теперь скрипт сам выбирает метод упаковки. :)

DmitryOlenin 26-02-2006 12:51 411104

ANDYru
В Windows 2000 Sp4 выдается следующее сообщение:
Код:

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\PasteClipBoard.vbs(7, 1) (null): Unspecified error
Текст в буфер копируется, но только открывается окошко IE - about:blank.
От этого можно избавиться?

Попробовал на WinXp SP2.
Код:

Ошибка CScript: На данном компьютере отключен доступ к серверу сценариев Windows. Обратитесь к системному администратору.
При установке боюсь не вывалилось бы ошибок... Где копать?

amel27
В Nlite есть функция "сжатие CAB". Аналогична ли она вашему скрипту?

amel27 26-02-2006 15:14 411167

DmitryOlenin
Цитата:

В Nlite есть функция "сжатие CAB". Аналогична ли она вашему скрипту?
Понятия не имею - nLite давно не пользовал, вот и сравните...

ANDYru 26-02-2006 23:25 411332

DmitryOlenin
странно - на xpsp2 катит без проблемм
может не верно батник сделал - завтра положу где нибуть

NikLok 13-03-2006 11:48 417149

amel27В вашем комнаднике используется команда findstr.exe Где ея можно взять?
Заглянув в каталог I386\svcpack\ был неприятно удивленн его составом! В нем лежат пркатически те же апдейты только переименованы! Они вообще нужны или нет. Если да, то в чем тогда заключается интеграция! То есть нахрен оня тогда нужна!!!

nsergeip 14-03-2006 11:59 417634

Цитата:

Если необходимо одинаково настроить рабочий стол (расположение иконок) на большом количестве компьютеров, то можно воспользоватся приаттаченной утилитой - DeskSaver.exe

После настройки на эталонном компьютере запускаем DeskSaver.exe s
Копируем утилиту и полученный файл настроек DeskSaver.ini на остальныее компьютеры и запускаем DeskSaver.exe r
Интересно каким образом это произойдет если формат ini файла таков
Код:

[Мои документы]
X=22
Y=2
[Мой компьютер]
X=22
Y=77
[Сетевое окружение]
X=22
Y=152
[Корзина]
X=1086
Y=752
[Internet Explorer]
X=22
Y=227
[ACDSee Pro]
X=174
Y=302
.........

ни путей ничего, откуда система возьмет все остальные данные, помоему это маразм!!!

ShaddyR 14-03-2006 12:04 417640

nsergeip: у меня тоже номер с DeskSaver не прошел.

denzill 14-03-2006 16:59 417749

в дополнение к Замена Boot Screen-на

изменение boot.ini:
boot.cmd
Код:

bootcfg /addsw /ng /id 1
 bootcfg /raw "/bootlogo" /a /id 1
 bootcfg /default /id 1


Vadikan 18-03-2006 23:19 419326

Тестирование RunOnceEx без перезагрузки системы или завершения сеанса

В конце файла RunOnceEx.cmd добавьте
Код:

rundll32.exe iernonce.dll,RunOnceExProcess
Команда инициирует запуск ключей RunOnceEx. Пожалуй, я добавлю это на сайт :)

DmitryOlenin 20-03-2006 00:12 419545

Всем известно, что своя тему оформления прописывается в файле *.sif.
Код:

CustomDefaultThemeFile = "%WinDir%\Cursors\theme.theme"
Но тема эта может не примениться, и останетесь вообще со стандартной темой Windows(даже не Luna).

Дело в том, что тема срабатывает при первом входе в систему(чуть раньше отображения ярлыков на раб. столе), после отработки RunOnceEx. Но если у вас последним пунктом стоит перезагрузка и до раб. стола дело не доходит... то вы рискуете получить то, что я описал выше.

Если у вас не применилась тема оформления, то маленький скрипт на AutoIt вам поможет.
В данном случае переменная var3 содержит путь до вашего файла с темой оформления.
Думаю, что надо писать именно в эту тему, т.к. случай необычный...

Код:

$allowed = 20 * 1000
$time = TimerInit()
$var = @SystemDir & '\' & 'rundll32.exe'
$var1 = @SystemDir & '\' & 'shell32.dll' & ',' & 'Control_RunDLL'
$var2 = @SystemDir & '\' & 'desk.cpl  desk'  & ','  &  '@'  & 'Themes ' & '/'  & 'Action'  & ':'  & 'OpenTheme '  & '/'  & 'file' & ':'
$var3 = @WindowsDir & '\' & 'Cursors' & '\' & 'theme.theme'
AutoItSetOption("WinTitleMatchMode", 4)
run($var & ' ' &  $var1 & ' ' &  $var2 & '"' & $var3 & '"')
Blockinput(1)
If TimerDiff($time) > $allowed Then _Abort()
For $k = 1 To 3
sleep(1000)
Send("{ENTER}")
    Next
exit

Func _Abort()
    ; close process if exists then exit.
    Dim $pid
    If ProcessExists($pid) Then
        ProcessClose($pid)
        Exit(2)
    Else
        Exit(3)
    EndIf
EndFunc


NikLok 21-03-2006 18:24 420203

Ну тогда вопрос ко всем!!! Так как amel27B не отвечает!

Цитата:

amel27В вашем комнаднике используется команда findstr.exe Где ея можно взять?

Vadikan 21-03-2006 21:17 420250

NikLok
Цитата:

Где ея можно взять?
В дистрибутиве Windows XP. findstr /?

NikLok 28-03-2006 11:26 422441

После встраивания обновлений в дистрибутив XP с помомощью RVM интегратора в директории I386/svcpack файлы типа kb..........exe заменяются файлами с расширениями ca_ Поэтому я считаю, что нужно добавить также сканирование на файлы
Таким образом сейчас в макросе 2 ЦИКЛА. По идее они должны отлавливать наличие обоих файлов и вносить о них информацию! Может кому и нада?
Код:

echo Line5=Дата установки системы: %date% >> "%D%oeminfo.ini"
echo Line6= >> "%D%oeminfo.ini"
echo Line7=Время установки системы: %time% >> "%D%oeminfo.ini"
echo Line8= >> "%D%oeminfo.ini"
echo Line9=Установленные обновления: >> "%D%oeminfo.ini"
echo Line10= >> "%D%oeminfo.ini"

set i=10
set j=0
set string0=
set string1=
set string2=
set string3=
set string4=
set string5=

FOR %%d 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 IF EXIST %%d\WIN51IP SET CDROM=%%d
For /F "TOKENS=1 delims=.exe"  %%j in ('dir /B %CDROM%\I386\svcpack\KB*.exe') do ((set kbname=%%j) & (call :myprint))
For /F "TOKENS=1 delims=.ca_"  %%j in ('dir /B %CDROM%\I386\svcpack\KB*.ca_') do ((set kbname=%%j) & (call :myprint))

if %j% == 1 echo Line%i%=%string0% >> "%D%oeminfo.ini"
if %j% == 2 echo Line%i%=%string0%  %string1%>> "%D%oeminfo.ini"
if %j% == 3 echo Line%i%=%string0%  %string1%  %string2%>> "%D%oeminfo.ini"
if %j% == 4 echo Line%i%=%string0%  %string1%  %string2%  %string3%>> "%D%oeminfo.ini"
if %j% == 5 echo Line%i%=%string0%  %string1%  %string2%  %string3%  %string4% >> "%D%oeminfo.ini"

GOTO :EOF
:myprint
if %j% == 0 set string0=%kbname%
if %j% == 1 set string1=%kbname%
if %j% == 2 set string2=%kbname%
if %j% == 3 set string3=%kbname%
if %j% == 4 set string4=%kbname%
if %j% == 5 set string5=%kbname%

if %j% == 5 echo Line%i%=%string0%  %string1%  %string2%  %string3%  %string4%  %string5%>> "%D%oeminfo.ini"

if %j% == 5 set string0=
if %j% == 5 set string1=
if %j% == 5 set string2=
if %j% == 5 set string3=
if %j% == 5 set string4=
if %j% == 5 set string5=

if %j% == 5 set /A i=%i%+1
set /A j=%j%+1
if %j% == 6 set j=0
:EOF


Boa Soft 01-04-2006 13:43 423883

Цитата:

ни путей ничего, откуда система возьмет все остальные данные, помоему это маразм!!!
А вот отсюда:

Цитата:

После настройки на эталонном компьютере запускаем DeskSaver.exe s Копируем утилиту и полученный файл настроек DeskSaver.ini на остальныее компьютеры и запускаем DeskSaver.exe r
Ярлыки настраиваются по именам. Не найденные - пропускаются.

Porscheman 04-04-2006 01:49 424610

Вложений: 1
Для чтения DVD стандартным WMP9 или WMP10 достаточно добавить в %windir%system32 файл CLVSD.ax и зарегистрировать его командой
Код:

%windir%\system32\regsvr32 -s %windir%\system32\CLVSD.ax
любым батником и т.п.
Файл прилагаю, правда не могу сказать откуда он (не помню), соответственно про авторские права тоже... ;)
Качество вполне приемлемое.

amel27 04-04-2006 08:40 424673

Цитата:

не могу сказать откуда он (не помню), соответственно про авторские права тоже
CyberLink Video/SP Filter
---
версия: 6.0.1402
производитель: CyberLink Corp.
продукт: CyberLink PowerDVD

amel27 07-04-2006 12:45 425778

Только для экспертов! FAKE-Setup своими руками.

Метод использования Fake-копии SETUP.EXE был придуман неким Pyron с форума MSFN и нынче широко используется для Unattend-пакетов, в основном драйверов (пакеты от Bashrat, BoaSoft и др.). Подробней о том как он фунциклирует можно почитать в мануалах к пакетам и на форумах MSFN. Несмотря на простой алгоритм, для написания EXE-файла нужно быть немного программером, а это ИМХО не совсем справедливо! ;). Поэтому я решил реализовать его на AutoIT, но здесь ждал облом - AutoIT v.3 напрочь отказывался запускаться в PRE-Setup окружении WinXP, хотя между тем прекрасно работал из под Win2K. К счастью, все заработало на версии 2.64, которая до сих пор доступна для скачивания.

Привожу пример скрипта, где совмещены обе возможности - AutoIT и PreSetup чтобы всегда можно было выбрать удобный интерфейс. Код намеренно не тестировался и может содержать ошибки - кому нужно, тот поймет что к чему. ;) Многое зависит еще от содержимого Presetup.Cmd
Код:

HideAutoItWin,On
 SetBatchLines,100

;=======================================================
; Восстанавливаем параметры командной строки
;-------------------------------------------------------
 SetEnv,i,0
 Repeat,%0%
  EnvAdd,i,1
  StringTrimLeft,parm,%i%,0
  SetEnv,CmdLine,%CmdLine% %parm%
 EndRepeat

;=======================================================
; Установка путей к утилитам и драйверам
;-------------------------------------------------------
 SetEnv,DrvTag,drv51
 SetEnv,WrkDir,%SystemDrive%\\Install

;=======================================================
; Установка всех требуемых файлов
;-------------------------------------------------------
 FileInstall,setupORG.exe,%SystemRoot%\\System32\\setupORG.exe
 FileInstall,presetup.cmd,%WrkDir%\\presetup.cmd
 FileInstall,cmdow.exe,%WrkDir%\\cmdow.exe
 FileInstall,7za.exe,%WrkDir%\\7za.exe
 FileInstall,setpath.exe,%WrkDir%\\setpath.exe
 FileInstall,watchdrv.exe,%WrkDir%\\watchdrv.exe

;=======================================================
; Трикс с переименованием
;-------------------------------------------------------
 IfExist,%SystemRoot%\\System32\\Setup.exe,RunWait,CMD /C REN Setup.exe SetupOld.exe,%SystemRoot%\\System32,Hide
 IfExist,%SystemRoot%\\System32\\SetupORG.exe,RunWait,CMD /C REN SetupORG.exe Setup.exe,%SystemRoot%\\System32,Hide

;=======================================================
; Собственно запуск процесса установки
;-------------------------------------------------------
 SetBatchLines,1
;-------------------------------------------------------
 RunWait,CMD /C PreSetup.cmd %DrvTag% %WrkDir%,%WrkDir%\\,Hide
 RunWait,Setup.exe %CmdLine%,%SystemRoot%\\System32

;=======================================================
; Чистим после себя
;-------------------------------------------------------
 RunWait,CMD /C RD /Q /S %WrkDir%,%SystemDrive%\\,Hide

P.S. Несмотря на "убогость" и сложный синтаксис морально-устаревшей версии, использование AutoIT открывает широкие возможности для автоматизации установки, некоторые из которых я еще сам не освоил. Вот только некоторые:
1. Свобода от правки inf-файлов, все инструменты включены уже в один файл - SETUP.EXE, который устанавливается простым копированием.
2. Свобода выбора между WATCHDRV и стандартным AutoIT-методом отслеживания окон, тем более что WATCHDRV отрабатывает не всегда.
3. Возможность условного заполнения реквизитов. Например, загрузив из INI-файла базу всех ПК можно автоматически заполнить имя машины, лицензионный ключ и т.д. Сам не пробЫвал - нужды пока не было.

Обсуждение вынесено в отдельную тему

GrandCat 10-04-2006 06:07 426417

Porscheman

"iviaudio.ax" - WinDVD Audio Decoder filter.
"ivivideo.ax" - WinDVD Video Decoder filter.
"claud.ax" - PowerDVD Audio Decoder filter.
"clvsd.ax" - PowerDVD Video Decoder filter.
"DSCinemAudioDecoder.dll" - CineMaster v4 Audio Decoder filter.
"DSCinemVideoDecoder.dll" - CineMaster v4 Video Decoder filter.

Вероятно claud.ax для полного комплекта понадобится.

ANDYru 01-05-2006 20:28 433228

shurikz
это не оригинально -1
просто а здесь таких путей не ищут -2
твоим способом нельзя на стадии установки добавлять строки в oeminfo.ini в зависимости от нужд -3

Shurikz 01-05-2006 20:36 433231

Цитата:

это не оригинально -1
просто а здесь таких путей не ищут -2
Ну да, я так и подумал :D
Цитата:

твоим способом нельзя на стадии установки добавлять строки в oeminfo.ini в зависимости от нужд -3
Вот теперь понятно, спасибо.

Old_man 06-05-2006 09:06 434997

amel27
Цитата:

winrecab.rar
Скачиваю, пытаюсь распаковать, а winrar (3.51) говорит - неожиданный конец архива :(

Kudeiar 09-05-2006 12:18 435934

При интеграции SP2 в WinXP Pro в папке дистрибутива появляется новая папка C:\XPCD\cmpnents которая разбита на две подпапки C:\XPCD\cmpnents\netfx\i386\netfx.cab и C:\XPCD\cmpnents\TABLETPC\i386, что с ними делать? Можно ли их удалить или куда-нибудь переместить?

simplix 09-05-2006 15:13 435968

Old_man перекачай, архив битый.
Kudeiar можно и удалить, они не нужны.

ProkVS 12-05-2006 15:27 437200

Может кто знает как осуществить такую маленькую хитрость:
надо некой командой запустить таймер на закрытие cmd-шного окна,
так сказать EXIT только по истечении например 30 секунд!
Это необходимо для вывода сообщения во время копирования большого объёма файлов с DVD
Типа "В ДАННЫЙ МОМЕНТ ИДЕТ КОПИРОВАНИЕ, ПОДОЖДИТЕ!"

ShaddyR спасибо! Вот весь форум перелопатил, а перед носом не посмотрел...

ShaddyR 12-05-2006 15:35 437209

ProkVS: а, как я понимаю, сначала читать - никак, ниасилил? Ведь второе сообщение в данной теме.

SAOPP 23-05-2006 00:45 441144

А можно каким нить другим способом реализовать это
Код:

shutdown.exe -r -f -t 180 -c "Для того, чтобы внесённые изменения вступили в силу, Windows будет перезапущен через 3 минуты..."
net user aspnet /delete

только, что бы окошко было другое - просто окошко с надписью?!

зы Окошко не привожу, ибо скрина под рукой нету, думаю все поняли о чём речь...

зыы Этот пост ОЧЕНЬ понравился, но кто бы подсказал как его немного подредактировать, а то что-то с отсчётом проблемы...

LeoRush 29-05-2006 11:04 443689

SAOPP А что смущает?

maugli 29-05-2006 16:17 443838

Прочитал про Sleep.exe.
Подскажите, куда закинуть эту утилитку? В $OEM$\$$\System32\...?

SAOPP 29-05-2006 19:11 443906

LeoRush
?

Vadikan 29-05-2006 20:12 443928

SAOPP
Цитата:

зыы Этот пост ОЧЕНЬ понравился, но кто бы подсказал как его немного подредактировать, а то что-то с отсчётом проблемы...
Напишите автору PM, если никто больше не подскажет.

maugli
Цитата:

Прочитал про Sleep.exe. Подскажите, куда закинуть эту утилитку? В $OEM$\$$\System32\
Да.

SAOPP 29-05-2006 20:15 443930

Vadikan
Спасибо, я просто не отписался в этой теме... я давно уже всё перепробовал и отписывался в другой теме на соответствующий вопрос :) Недостатком autoit явялется то, что он "паузит" систему на время своего выполнения.

bogomolv 19-06-2006 00:26 452299

Часто при автоустановке желательно знать наличие модема, пишущего CD или DVD, ноутбук ли это, или стационарная машина, а иногда и просто требуется определить наличие конкретной железки!
Лень заморачиваться, поэтому привожу оригинальные autoit-скрипы, идею которых при желании всегда можно реализовать с помощью обычных батников.

Наличие модема
Код:

RegRead('HKLM\SYSTEM\CurrentControlSet\Services\Modem\Enum','0')
If Not @error Then
;настройка соединений, установка download'еров и т.д. …
EndIf

Наличие пишущего CD или DVD
Код:

;Наличие CD-RW
If RegRead('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CD Burning','DriveIndex')='' Then Exit
;Наличие DVD-RW (проверен недостаточно)
If RunWait('@ComSpec@ /C reg query "HKLM\SYSTEM\CurrentControlSet\Enum\IDE" /s | find "-RW"','',0)<>0 Then Exit
;установка Nero…

Особые схемы управления питанием ноутбука, AMD (Cool'n'Quiet)
Код:

If FileExists('%WINDIR%\system32\drivers\CmBatt.sys') Then RunWait('regedit /s nast_powerNB.reg')
If FileExists('%WINDIR%\system32\drivers\asacpi.sys') Then RunWait('regedit /s nast_powerAMD.reg')

Наличие сети
Код:

$net=RegRead('$HKLM_CC$\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001','NetCfgInstanceId')
If Not @error Then
;настройка сети
Else
;убрать значок "Сетевое окружение" с Рабочего стола
RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer','NoNetHood','REG_BINARY','00000000')
EndIf

Считывание на стадии cmdlines будущего разрешения экрана
[S]Изюм в том, что заданные в unattend.txt параметры разрешения могут быть избыточными, или же могут "не подхватиться" драйвера…[/S]
Код:

$screen=1024
If RunWait('@ComSpec@ /C reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses" /s | find "DefaultSettings.XResolution" | find "500"','',0)=0 Then $screen=1280

Проверка наличия конкретной железки
Код:

$hwid='PCI\VEN_1102&DEV_0002' ;SBlive
If RunWait('@ComSpec@ /C devcon.exe hwids "$hwid$" | find "$hwid$"','',0)=0 Then
;продолжение установки дров
EndIf


qeraser 14-08-2006 11:04 471671

Sanja Alone

К сожалению не получается сделать, чтобы Ваш файл корректно работал у меня. Не работает список апдейтов и не извлекает серийник

Тестировал на дистрибутиве лежащем на винте D:\XPCD\WINDISTRIB\WINXPU\

Вот слегка отредактированный вариант (поменял пути)

Код:

@echo off

rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ --->
rem полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini
rem маркерный файл для определения cdrom-а
set TAGFILE=WIN51
rem производитель
set MANUFACTURER=Ivan
rem модель
set MODEL=Unattended XP DVD
rem кол-во апдейтов в одной строке
set UPMAX=6
rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет)
set KEY=1
rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет)
set KEYISVISIBLE=0
rem присвоение переменной CDROM буквы cdrom-а, определенной по маркерному файлу
for %%d 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 if exist %%d:\%TAGFILE% set CDROM=%%d:
rem каталог с апдейтами
set UPDATESDIR=d:\XPCD\WINDISTRIB\WINXPU\I386\SVCPACK
rem маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
set UPDATESMASK=*.*
rem Обеспечение правильности отработки мультизагрузочного CD/DVD
set WINNTSIF=d:\XPCD\1xpu\winnt.sif

rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ --->

rem Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан;
rem т.о. нет нужды его предварительно удалять
echo [General]> "%OEMFILE%"
echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%"
echo Model=%MODEL%>> "%OEMFILE%"

rem Достаем из winnt.sif (winn1.sif) серийный номер
rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами)
if defined WINNTSIF (
        if %KEY% == 1 (
                for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" %WINNTSIF%') do (
                if %KEYISVISIBLE% == 1 (
                        echo [Support Information]>> "%OEMFILE%"
                        echo Line1=ProductKey: %%j>> "%OEMFILE%"
                        echo Line2=>> "%OEMFILE%"
                        set i=3
                ) else (
                        echo [OEMSpecific]>> "%OEMFILE%"
                        echo SerialNo=%%j>>"%OEMFILE%"
                        echo [Support Information]>> "%OEMFILE%"
                        set i=1
        ))
        ) else (
                echo [Support Information]>> "%OEMFILE%"
                set i=1
        )
) else (
echo [Support Information]>> "%OEMFILE%"
set i=1
)

rem Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37)
echo Line%i%=Installation Date and Time: %date% (%time:~0,-6%)>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1
echo Line%i%=Installed Components and Updates:>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Винды)
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "file(s)"`) do (set numfiles=%%m)
if not defined numfiles (
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "файлов"`) do (set numfiles=%%m)
)

rem вспомогательные переменные
set l=0
set c=0

rem Список апдейтов (имена всех файлов без расширений)
rem (без ключевого слова usebackq команда dir будет воспринята как
rem имя файла для подстановки в цикл FOR с последующей выдачей сообщения
rem об отсутствии такого файла в текущем каталоге).
for /F "usebackq tokens=1 delims=." %%j in (`dir /B %UPDATESDIR%\%UPDATESMASK%`) do ((set kbname=%%j) & (call :myprint))

rem Выход из этого пакетного файла.
rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает
rem передачу управления в конец текущего пакетного файла. Это позволяет легко
rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto)
goto :EOF

:myprint
if %c% == 0 (
        set str=%kbname%
) else (
        set str=%str%  %kbname%
)

set /A c+=1

if %c% == %UPMAX% (
        echo Line%i%=%str%>> "%OEMFILE%"
        set /A i+=1
        set /A l+=1
        set str=
        set c=0
        set /A tmp=numfiles-l*UPMAX
) else (
        if %numfiles% LSS %UPMAX% (
                if %c% == %numfiles% (
                        echo Line%i%=%str%>> "%OEMFILE%"
                )
        )
        if %tmp% LSS %UPMAX% (
                if %c% == %tmp% (
                        echo Line%i%=%str%>> "%OEMFILE%"
                )
        )
)


Sanja Alone 15-08-2006 09:40 472161

qeraser
Цитата:

Не работает список апдейтов
Можно добавить в файл принудительное включение расширенной обработки команд:
Код:

SETLOCAL ENABLEEXTENSIONS
Цитата:

и не извлекает серийник
При наличии самого файла winn?.sif и серийника в строке ProductKey = серийник этого файла, такое возможно лишь в сл. установленного атрибута "скрытый" для файла winn?.sif.

qeraser 15-08-2006 09:58 472167

Sanja Alone
Разобрался.
Код:

Не работает список апдейтов
надо было сохранить батник в DOS-866 кодировке.
Код:

не извлекает серийник
не включил параметр KEYISVISIBLE

Я слегка отредактировал батник чтобы он отображал еще и количество исправлений.

В стиле
Код:

Installed Components and Updates (109)

Netlick 24-08-2006 19:52 476513

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

Vadikan 24-08-2006 21:14 476540

Netlick
Пожалуйста, прочтите прикрепленное сообщение (первый пост темы), обратив внимание на текст, выделенный жирным красным шрифтом. Потом воспольуйтесь фильтрами по названию темы по музык.



Результат

Netlick 25-08-2006 16:03 476811

Так я имел ввиду на фоне завершения процесса установки, а не во время выполнения RunOnceEx...

Vadikan 25-08-2006 18:58 476869

Netlick
Так я имел в виду, что надо указанную тему целиком прочитать (4 сообщения) и перейти по ссылкам, а не только на название посмотреть. :moderator

IVAndron 28-08-2006 22:28 477758

Всем привет!

Вариант создания маркерных файлов.

Например, используя файл winn1.sif, прописываем в нем:

Код:

[GuiUnattended]
DetachedProgram="cmd /c echo .>%SYSTEMDRIVE%\Temp\winn1"

в этом случае создается маркерный файл winn1 :)

Dust112 03-09-2006 11:08 480128

Sanja Alone
qeraser
Объясните, что это за символ ^| . Зарание спасибо.

Sanja Alone 04-09-2006 02:00 480345

Dust112
Цитата:

что это за символ ^|
Отвечу двумя тезисами:
  1. Символ | - конвейер (cчитывает выходные данные одной команды и записывает их на вход другой команды)
  2. Амперсанд (&), вертикальная черта (|) и скобки ( ) являются специальными символами, которым должен предшествовать управляющий символ (^) или кавычки, если эти символы передаются в качестве аргументов.

boss911 09-09-2006 00:15 482783

prokazzza

Еп, ну вы посмотрите на него, ты "наверно" опять ошибся постом, да сюда это надо постить и плиз, обведи скрипт тегом [CОDE], юзай поиск!!

krestik 06-10-2006 10:17 494158

Подскажите пожалуйста как написать пакетный файл для настройки маршрутизации с помощью команды "route add"

-MAXX- 06-10-2006 18:28 494441

Sanja Alone
чёта ээээ.. мож заработался я просто..
чес говоря в скриптах не особо силён 8(
после отработки батча висит очко командной строки...
сам батч не закрывается чтоль?
запускаю при первой загрузе в систему из install.cmd
пытаюсь закрыть вручную - пишет типа вы хотите прервать выполнение командного файла? y/n
мож что мудрого в конце дописать? пробовал влепить ему exit - просто закрывается и в oeminfo не пишет обновления,
только дату установки.
хелп ми..

кажись не туда запостил 8(
просьба админам - если что, перенесите

Sanja Alone 07-10-2006 03:39 494634

-MAXX-
Файл должен сам закрываться (благодаря команде goto :EOF). А "очко командной строки" у тебя, скорее всего, висит от install.cmd (в его конце и должен быть этот самый exit). Ну и ес-но, вызывать oeminfo.cmd из другого cmd-файла нужно при пом. команды call.

-MAXX- 09-10-2006 11:44 495355

пасибы за ответ, я уже разобрался (причём допетрил сам 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
а то как-то не в тему.. сорри..

EgOrus 17-10-2006 16:42 499097

написал маленький батничек для смены буквы для 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

amel27 18-10-2006 12:54 499495

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, - буква диска.

EgOrus 18-10-2006 16:19 499612

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

jimmyboy 08-11-2006 21:50 508866

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

amel27 10-11-2006 13:36 509656

Цитата:

Сделайте кто-нибудь пожалуйста оптимизированный вариант для русской винды
Добавил автоопределение локализации и вынес типы переназначаемых устройств в заголовок. Если смещения изменятся теперь проще подкорректировать... Заменять старый вариант не стал если кто вдруг захочет разобраться в его работе или вдруг вылезет какая ошибка.
Код:

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


jimmyboy 13-11-2006 13:01 510936

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

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

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

Phanthom 14-11-2006 00:17 511273

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

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

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

amel27 14-11-2006 04:41 511312

jimmyboy
Цитата:

спасибо за батник
Цитата:

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

jimmyboy 16-11-2006 14:16 512647

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

orphan 20-11-2006 17:15 514654

Подскажите пожалуйста где можно скачать winrecab.rar и msretime.rar.
По ссылкам скачать не получается, архивы битые.

vlastan 03-12-2006 16:02 520262

Кто-нибудь может выложить утилитку CDEject.exe? В этой теме аттач битый, а в инете натыкался только на шараварные подобные проги.

qeraser 03-12-2006 16:05 520263

vlastan
Пожалуйста

vlastan 04-12-2006 10:48 520586

qeraser, спасибо, но у меня она почему-то не срабатывает...запускал на компе из командной строки...перепробовал все команды. У кого-нибудь была подобная проблема?

amel27 04-12-2006 12:38 520629

vlastan
Цитата:

в инете натыкался только на шараварные подобные проги
AutoIT скрипт устроит?... Легко скомпилировать в EXE или изменить функциональность по желанию:
Код:

; Читаем параметр командной строки и если обнаружен вызываем функцию,
; переменная окружения 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


qeraser 04-12-2006 16:45 520746

vlastan
На msfn натыкался на CD_DVD_Switcher, попробуйте.
Вот первоисточник

Вариант от amel27 прост и легок. Я бы остановился на нем.

TombAlex 14-12-2006 11:30 524577

Чтение структуры подкаталогов для создания значения ключа 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

Эта программа тупо сканирует структуру подкаталогов и пишет их имена последовательно в файл folders.txt в качестве аргумента в коммандной строке необходимо указать подкаталог который необходимо просканировать (в моем случае E:\Distrib\WiXPSP2$OEM$\$1\drivers\), а потом в блокноте с помощью поиска и замены удалить часть путей подкаталогов у меня это выглядит так E:\Distrib\WiXPSP2$OEM$\$1\ заменяем на ничего (не смог я поиск регулярных выражений корректно написать).
Внимание: программа тупая она не понимает сколько символов в названии каталога, так что проверяйте это сами.

amel27 14-12-2006 13:04 524645

...тогда вот еще 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%


TombAlex 15-12-2006 05:23 524900

Доделаный скрипт для построения 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


VitRom 24-12-2006 17:56 528602

amel27
Цитата:

Rem Выделенные для приводов буквы
SET DRV_FREE=X Y Z
Где-то когда-то на Майкрософте в КБ было, что, мол, буковка Z используется при выполнении батников ("скриптов входа") при сетевом логоне...
Правда, не помню, к каким версиям Виндов применимо...

ProkVS 27-12-2006 14:17 529762

Вложений: 1
Очистка %temp% с подвыподвертом! :)
Если кому не хватает возможностей cmd
В аттаче прожка EraseTemp 3.3.1.12
С помощью неё можно вот так вот разнообразно очищать диск от временных файлов после установки ОС:
Код:

EraseTemp.exe [/Temp] [/Dump] [/Path:"C:\Temp"] [/Silent] [/Minimized] [/Days:2] [/Dump] [/SubFolders:"C:\Download"] [/KeepFolders] [/IgnoreLastAccessed] [/Log:"C:\Log.txt" [/LogDate]] [/NoClose] [/Test] [/?]
/Temp        Erase the default TEMP Directory (Default)
/Path        Erase a specific directory
/Silent        No output to the screen
/Minimized        Run minimized
/Days        Days to keep (1 is default)
/Dump        Erase dump and DrWatson files (Default)
/SubFolders        Removes emtpy subdirectories
/KeepFolders        Keeps subdirectories (not for /SubFolders)
/IgnoreLastAccessed        Only looks at last modified
/Log        Logs the names of the deleted files
/LogDate        Adds date to the logfile
/NoClose        Don't close the program automatically
/Test        Test mode, nothing will be deleted
/?        This information


Boa Soft 07-01-2007 23:40 533178

Вложений: 1
Тем, кого одалели проблемы, возникающие с рзаным старым софтом и драйверами на системах с аппаратной поддержкой DEP.

Утилита KillDep.exe

Ключи коммандной строки - нет.

Назначение - отключение DEP в boot.ini

Утилита, перебирая диски, находит boot.ini, находит систему по дефолту и для нее меняет/дописывает.

Код:

/noexecute=AlwaysOff /NoPae

vserd 16-01-2007 11:27 536727

Утилита для преобразования путей вида
\device\CdRom0\
\device\harddisk0\partition1\
в букву диска (D:)

hxxp://rapidshare.com/files/11927597/DevicePath2DosPath.zip.html
Коментарии, ошибки и пожелания приветствуются.

amel27 10-02-2007 09:01 548035

По ходу решил немного упростить секрет DmitryOlenin об автоматизации применения Темы (пост #44),
новый вариант AutoIT-скрипта:
Код:

$theme = "Luna"
$title = "Свойства: Экран"

If FileExists (@WindowsDir & "\Resources\Themes\" & $theme & ".theme") Then
    ShellExecute (@WindowsDir & "\Resources\Themes\" & $theme & ".theme")
    WinWait ($title,"",10)
    If WinExists ($title) Then ControlClick ($title,"",1)
Else
    MsgBox (16,'Ошибка применения Темы','Тема "' & $theme & '" не обнаружена! ')
EndIf

З.Ы. Кстати, в старом варианте скрипта присутствует некритичная ошибка... ;)

Lebedev 10-02-2007 19:39 548232

Кто подскажет, как очистить текущую папку? Кахлось бы del *.* но это только для файлов. Еще нужно и папки. А для удаления папки нужно знать ее имя. Удалить текущую папку и создать нельзя - заморочки с правами доступа. В общем пытаюсть перенапрвлять dir в rmdir но как-то пока безуспешно...

зы: нужно решение именно стандартными консольными командами.

ProkVS 11-02-2007 11:18 548419

Lebedev
Попробуйте вот так
Код:

RD /S /Q .\

Lebedev 11-02-2007 13:28 548442

Это же вроде удалить текующую папку? Всегда "процесс не может получить доступ к файлу, т.к. этот файл занят текущим процессом" И все верно, я же в этой папке сейчас нахожусь...

ProkVS 11-02-2007 14:03 548454

Lebedev
Я попробовал - всё работает! Создаем test.cmd с содержанием:
Код:

RD /S /Q .\
exit

Кладем его скажем в папку C:\Test\, в эту же папку кидаем файлы и подкоталоги, запускаем - имеем пустую папку C:\Test\
Логика следующая - т.к. пакетник находится внутри текущей папки, она остаётся невредимой, а всё что внутри - удаляется!

Lebedev 11-02-2007 14:26 548464

спасибо, понял... проверил... только он так сам батник рубит... ужос =)

У меня батник вызывается внешним приложеним.
Лежит он в одной папке, а при вызове, текущей установлена другая.
По идее сработает но как-то это стремно =)

Я вообще мучаю команду

Код:

dir /A:D /B | rd /S /Q
но естественно ругается rd =(
----------------------------
одолел:

Код:

rem Очень опасный батник!
rem Удаляет все содержимое текущей папки, так что нужно смотреть, где он запускается
rem Если он в текущей папке, зарубит и себя =)

for /f "tokens=* usebackq" %%i in (`dir /A:D /B`) do (
    rd %%i /S /Q
)


del *.* /F /Q


Smitis 22-02-2007 11:04 553798

Lebedev
Зачем такие сложности для преодоления уже РЕШЁННОЙ проблемы? Команда RD/RMDIR прекрасно справляется с задачей очистки текущей папки. Если не нравится сообщение об ошибке, можно сделать так:
Код:

rd /s/q . 2> nul > nul
Твой батник же, кстати, обломается на папках, в именах которых есть пробелы. Лучше писать "%%~i" вместо %%i
Если смущает, что текущая папка другая - делать переход и проверку (на случай ошибки). Вот мой вариант батника. Имя очищаемой папки передаётся в качестве параметра, несколько уровней проверки на ошибку:
Код:

@echo off
if "%~1" == "" exit /b 1
pushd "%~1"
if errorlevel 1 exit /b 1
if /i not "%cd%" == "%~1" if /i not "%cd%\" == "%~1" exit /b 1
rd /q /s . > nul 2> nul
popd


yaryar 03-04-2007 01:16 569685

В продолжении темы "Способ добавления ярлыков в панель быстрого запуска (Quick Launch)" - см. шапку.

Надоело, когда при открытии Проводника открывалась папка "Мои документы"
Хотелось, чтобы открывалась папка "Мой компьютер".

Решение:
Создаем папочку
$OEM$\$Docs\Default User\Application Data\Microsoft\Internet Explorer\Quick Launch - как указано в теме,
Копируем туда текущий ярлык Проводника, а в свойствах ярлыка, в поле объект пишем:

%SystemRoot%\explorer.exe /e, /select, %SystemDrive%.

Таким образом, при нажатии на ярлык, будет открываться папка "Мой компьютер", а не "Мои Документы".
Спасибо за внимание.

aats 07-04-2007 21:15 571379

В папке C:\WINDOWS\Fonts находятся около 40 скрытых (для Проводника, TotalCommander их видит) шрифтов. Чтобы сделать их видимыми надо:
1. Распаковать файл font.in_
2. Найти в нем и удалить вместе с содержимым секцию [HiddenFontFiles]
3. Запаковать font.inf с помощью команды makecab в font.in_

aats 18-04-2007 14:53 576073

Чтобы удалить ссылки в Избранном надо:
1. Распаковать файл INSTALL.IN_
2. Открыть файл INSTALL.INS в Блокноте
3. Очистить секции [url], [FavoritesEx] и [Strings]
4. Запаковать INSTALL.INS с помощью команды makecab в INSTALL.IN_

macron1 25-04-2007 17:49 579465

Кто подскажет, как ассоциировать конкретный тип (расширение) файлов с конкретной программой. Пример - хочу, чтобы после установки XP шоквейвные флеш-файлы (*.dir) открывались через Internet Explorer. Через [GuiRunOnce] запускаю reg-файл такого содержания:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dir]
"Application"="IEXPLORE.EXE"

И все нормально открывается. Но сейчас возникла необходимость вместо IE автоассоциировать их с Оперой:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dir]
"Application"="C:\\Program Files\\Opera\\Opera.exe"

но такой вариант не срабатывает - при запуске любого *.dir-файла возникает окно ручного выбора программы. Может какая команда есть для привязки конкретных расширений к программам ?

Vadikan 25-04-2007 18:47 579489

macron1
Aналогичный вопрос уже задавался на форуме. Воспользуйтесь фильтрами по названию темы по ассоц.



Результат

Если ни одна из тем не помогла решить проблему, то поднимите своим вопросом наиболее подходящую.

Цитата:

Цитата (шапка темы)
Не нужно задавать вопросы, не относящиеся к опубликованным в теме материалам. Если вы хотите что-то осуществить, но не знаете как - воспользуйтесь правилами создания тем на форуме.


Craager 01-05-2007 00:05 581501

И куда потом его засунуть ???

YuriPet 14-05-2007 20:51 586846

Вложений: 2
Меня тут недавно попросили - сделал... Может кого заинтересует? ;)

В папку $OEM$\$$\System32\ вкладываем sysdisk.ico с желаемым изображением системного раздела HDD (пример во вложении).
Добавляем в какой нибудь CMD-файл (где кому удобнее, например в cleanup.cmd) строчку:
Код:

Reg Add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%HOMEDRIVE:~0,-1%\DefaultIcon" /ve /d "%HOMEDRIVE%\WINDOWS\system32\sysdisk.ico" /f
Получится как на вложенном скриншоте.

voler 16-05-2007 08:47 587469

Ошибка при раз архивировании sysdisk_ico.rar. Перезалей плиз.

YuriPet 16-05-2007 09:41 587495

voler
Это особенность нашего форума. :) Попробуй скачать с использованием "качалки" (например Download Master)

Spirkaa 16-05-2007 23:02 587770

YuriPet мелочь, а приятно. А возможно добавление этого ключа из .reg файла?

YuriPet 16-05-2007 23:32 587779

Spirkaa
Если пожертвовать универсальностью (возможностью установки на любой раздел HDD), а ограничится только диском C:, то очень даже просто:
Код:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\C]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\C\DefaultIcon]
@="C:\\WINDOWS\\system32\\sysdisk.ico"


Anton04 17-05-2007 13:00 587942

YuriPet

Я бы, свё же, воспользовался переменной %SYSTEMROOT% в данном примере. ;)

YuriPet 17-05-2007 13:50 587965

Anton04
Если вы о примере с использованием CMD-файла, то согласен :), а вот из REG-файла - сильно сомневаюсь... :unsure:
Как предлагаете "выдирать" букву системного диска, например, "D" (без двоеточия) ;)

Anton04 17-05-2007 14:22 587981

YuriPet

Собственно, а ты не сомневайся ;) Чем тебя такой вариант не устроит?:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\C]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\C\DefaultIcon]
@="%SystemRoot%\\ICO\\sysdisk.ico"

vek 17-05-2007 14:46 587990

Где-то тут уже обсуждалось, что переменная из REG-файла отрабатывает некорректно. Решилось по-моему переходом на INF.
P.S. Я себе уже давно сконвертировал все твики в INF. Как-то удобней читается и обрабатывается.

Anton04 17-05-2007 14:59 587994

vek

Незнаю как там, а данном контексте всё работает на ура, я вообще всегда стараюсь отвязаться от конкретной буквы диска (и другим советую), т.к. никогда заранее не знаешь какая буква диска является системным разделом... ;)

YuriPet 17-05-2007 15:03 587995

Anton04
Цитата:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\C]
Выделено и подчеркнуто мной... :laugh:

Цитата:

Как предлагаете "выдирать" букву системного диска, например, "D" (без двоеточия)

Anton04 17-05-2007 16:10 588021

YuriPet

Ну извени я не понял о чём ты... и нечего смеятся... как объсняешь такой ответ и колучаешь. :tongue:

Для того она и индивидуальная иконка шоб привязываться к конкретной букве или папке.

jameszero 17-05-2007 16:24 588024

Могу немного дополнить твик YuriPet следующей строчкой:
Код:

Reg Add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%HOMEDRIVE:~0,-1%\DefaultLabel" /ve /d "Local OS" /f
Системный диск после установки, будет именоваться не "Локальный диск", а "Local OS", или что вы там напишете, по своему усмотрению.

amel27 20-05-2007 12:10 588876

Следующая утилитка поможет сэкономить место на жестком или CD/DVD диске, упаковав файлы из пакета драйверов в CAB-архивы. Полученный пакет (в отличии от обычных 7z или RAR архивов) не теряет своей функциональности, его можно применять при любом типе установки - вручную или автоматически. Кроме того, из пакета будут удалены все лишние файлы (не определенные в INF).

прямой линк на закачку: http://www.msfn.org/board/index.php?...=post&id=18747
обсуждение на MSFN: http://www.msfn.org/board/DrvComp_v20070519_t90020.html

Anton04 29-06-2007 16:17 605920

EgOrus
amel27

Большое спасибо за скрипт "Переназначение букв приводов", но вот маленький нюанс, почему то не работает в WinXP SP1 (rus), в WinXP SP2 (rus) всё нормуль. В чём может быть заковырка?

Ещё бы хотельсь что-то подобное и для Windows 2000 SP4 заиметь... :blush2: реально!?

amel27 02-07-2007 10:50 606913

Anton04
в Win2K нет штатного DiskPart.exe, попробуте скопировать из XP

Anton04 02-07-2007 11:17 606927

amel27

Да пробовал я, не пашет она под Win2k :cry:

А, что можешь сказать по поводу Windows XP Pro SP1!? :swoon:

Дело в том, что именно из этой же копии делался Windows XP Pro SP2 и на нём всё работает... вооще непонятка какая-то... :wacko:

amel27 02-07-2007 12:11 606950

Anton04
Цитата:

не пашет она под Win2k
вроде пашет, только не видит всех приводов... отрабатываться будут только диски, отображаемые в режиме "управление дисками" диспетчера устройств... или проверь из командной строки:
Код:

@echo list volume|diskpart

Anton04 03-07-2007 14:02 607466

amel27

Вот именно, что утилита то сама работает, а вот скрипт нет... похоже ведёт себя точно так же как в Windows XP Pro SP1 (rus)... :cry:

Я в скриптах так свинья в апельсинах... :blush2:

:help: :help: :help:

amel27 04-07-2007 13:19 607943

Anton04
Цитата:

утилита то сама работает, а вот скрипт нет
угу, пробуй:
Код:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
Rem Тип обрабатываемых приводов и выделенные для них буквы
SET DRV_TYPE=DVD CD
SET DRV_FREE=N O P
Echo.
Echo.Progress: Проверяем наличие DiskPart...
DiskPart.Exe /? >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
        Echo.
        Echo.Progress: Файл DISKPART.EXE не найден, работа скрипта прервана!
        PAUSE
        EXIT
)
Echo.Progress: Определяем локализацию 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
)
echo.Progress: Вычисляем количество пропускаемых строк...
SET SKIP=0
FOR /F "tokens=1 delims=[]" %%A IN ('@echo list volume^|@diskpart^|find /N "DISKPART>"') Do IF !SKIP! EQU 0 SET /A SKIP=%%A+2
Echo.Progress: Формируем список устройств, фильтруем переназначенные ранее...
FOR /F "skip=%SKIP% 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
)
IF "%VOL_WORK%"=="" (
        echo.
        echo.Progress: Список переназначения пуст^^^! Скрипт завершил работу.
        EXIT
)
Echo.Progress: Выполняем переназначение по сформированному списку...
Echo.
FOR %%A IN (%VOL_WORK%) DO (
        CALL :FindNext
        CALL :ASSIGN %%A !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|find /I "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.
Echo.Скрипт прерван^! Список свободных букв исчерпан.
EXIT


Anton04 04-07-2007 16:11 608073

amel27

Вауууу... :yahoo: работает! И подходит даже к WinXP SP1. Спасибо дружище! :hi: :UP:

P.S. А не мог бы ты прокомментировать изменения скрипта по сравнению со скриптом для winXP SP2. :blush2: Ну так, для будущих поколений. :biggrin:

amel27 05-07-2007 02:59 608336

Anton04
Цитата:

не мог бы ты прокомментировать изменения скрипта
почему-то DiskPart по разному выдает инфу о версии, соответственно смещение от начала файла до данных будет разным... вместо фиксированного смещения поставил автоопределение.

Sanja Alone 15-07-2007 14:37 613672

Дополнил статью Пауза в пакетном файле. Таким образом можно организовать паузу в пакетном файле без использования внешних утилит. Ограничение данной версии: длительность паузы может составлять 1-60 секунд.

QUADamage 17-07-2007 00:50 614410

Небольшая хитрость, может кому-нить пригодится.

Создает скрытого пользователя TsInternetUser с правами администратора.

Пользователь не виден ни в окне приветствия, ни в панель управления - учетные записи пользователей, только в оснастке управления пользователями.

Я использую при установке на работе, очень помогает со всякими нерадивыми пользователями, либо когда надо что-то срочно сделать :)

Не забудте сменить пароль на свой ;)
Цитата:

net user TsInternetUser ВАШ_ПАРОЛЬ /add
net localgroup Администраторы TsInternetUser /add
net localgroup Administrators TsInternetUser /add
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

QUADamage 17-07-2007 01:26 614422

Еще одно удобство сделал - отправка смски на телефон, когда завершена установка винды. Помогает, когда с клиентом пошел чай пить о жизни болтать, а про винду забыли :) Ну и на работе, когда замучили пользователи и про винду просто напросто забываешь :)

Необходимые условия:
- Установленный драйвер сетевой карточки (у меня ставится через драйверпаки)
- Назначение IP адреса через DHCP
- Поддержка вашим оператором возможности отправки СМС через почту (у мегафона через маил.ру работает замечательно)
- Интернет собственно ;)

Как это работает:
1. Текст ipconfig /all записывается в файл %WinDir%\info
2. Через консольную программку sendEmail отправляется %WinDir%\info на ваш ящик, который по-идее должен отправить вам смску
Я для удобства сделал фильтр, который все письма с темой SMS кладет в отдельную папку, чтобы не заводить спец. ящик под отправку.


Сам код, подставьте свои параметры только:

Код:

cmd /c ipconfig /all >%WinDir%\info
sendemail -s ВАШ_SMTP -f С_КАКОГО_ЯЩИКА_СЛАТЬ -xu ЛОГИН_НА_SMTP -xp ПАРОЛЬ_К_SMTP -t АДРЕС_НА_КОТОРЫЙ_СЛАТЬ_ПИСЬМО -u SMS -o message-file=%WinDir%\info -o message-charset=WINDOWS-1251

Параметры для маил.ру:
sendemail -s smtp.mail.ru -f мыльце@mail.ru -xu мыльце@mail.ru -xp хе-хе -t мыльце@mail.ru -u SMS -o message-file=%WinDir%\info -o message-charset=WINDOWS-1251

программку тащите отсюда:
http://caspian.dotconf.net/menu/Soft...v155-notls.zip

TombAlex 14-08-2007 05:38 627218

Еще одна доделка VB-скрипта для генерации аргумента OemPnPDriversPath в файле winnt.sif генерирует набор путей к каталогам включает только пути содержащие inf файлы

Код:

Set objArgs = WScript.Arguments

'Проверка наличия аргумента командной строки
If objArgs.length = 0 Then
  MsgBox "Не задан каталог" & Chr(13) &_
  "в коммандной строке", 16, "Выполнение прервано"
  WScript.Quit
End If

'Проверка существования каталога данного в аргументе командной строки
Set fso = CreateObject("Scripting.FileSystemObject")
If  Not fso.FolderExists(objArgs(0)) Then
  MsgBox "Каталог не существует", 16, "Выполнение прервано"
  WScript.Quit
End If

'Включение/отключение проверки на соответствие имен каталогов формату 8.3
nameformat = MsgBox ("Отключить проверку на соответствие" & Chr(13) &_
"имен каталогов формату 8.3?", 4, "Проверка имен каталогов")

'Возможность добавления каталогов к корневой структуре структуре имен
sparent = InputBox ("Если хотите добавить корневой каталог к структуре" & Chr(13) &_
"пример: к drivers\ChipSet\Intel добавить каталог distrib " & Chr(13) &_
"чтобы получить distrib\drivers\ChipSet\Intel" & Chr(13) &_
"наберите distrib\" & Chr(13) & "Если не хотите добавлять нажмите Отмена", "Добавление каталога к корневой структуре")

'Проверка существования лога
    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 fsoroot = CreateObject("Scripting.FileSystemObject")
Set folroot = fsoroot.GetFolder(psf.path)
If folroot.IsRootFolder Then
  froot = 1
Else
  froot = 0
End If

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, froot)

Function readcatname (folderspec, rpatrn, froot)
  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
'Проверка соответствия имени каталога формату 8.3 
  If UCase(f1.Name) <> UCase(f1.ShortName) AND nameformat = 7 Then
  MsgBox "Имя каталога не соответствует формату 8.3" & Chr(13) & f1.Path & Chr(13) & f1.Name,_
  16, "Выполнение прервано"
  WScript.Quit
  End If
'Проверка каталога на наличие в нем inf-файлов, если файлов нет каталог будет
'исключен из набора
  extcount = 0
  Dim fsofol, fl, fo, extcount
  Set fsofol = CreateObject("Scripting.FileSystemObject")
  Set fsoext = CreateObject("Scripting.FileSystemObject")
  Set fl = fsofol.GetFolder(f1.path)
  Set fo = fl.Files
  For Each fo1 In fo
    If UCase(fsoext.GetExtensionName(fo1)) = UCase("inf") Then
    extcount = 1
    End If
  Next
  If extcount = 0 Then
  else
'Открытие файла на запись
    Set fsoLogO = CreateObject("Scripting.FileSystemObject")
    Set fsoLog = fsoLogO.GetFile("folders.txt")
    Set ts = fsoLog.OpenAsTextStream(8,0)
'Обрезка имени каталога   
    Set regEx = New RegExp
    If froot = 1 Then
    regEx.Pattern = rpatrn
    Else
    regEx.Pattern = rpatrn & "\\"
    End If
    regEx.IgnoreCase = True
    sname = regEx.Replace(f1 , "")
    if cn = 0 Then
      cn = 1
    else
      ts.Write ";"
    End If
    ts.Write sparent + sname
    ts.Close
    End if
'Рекурсивный вызов функции
  call readcatname (f1.path, rpatrn, froot)
  Next
End function
Msgbox "Выполнено"


aats 14-10-2007 17:22 660316

Чтобы удалить ярлык Internet Explorer из меню "Пуск", с рабочего стола и из панели быстрого запуска, надо:
1. Распаковать файл IEACCESS.IN_.
2. В секции [IEAccess] заменить строку "Run=ShowIE" на "Run=HideIE".
3. Запаковать IEACCESS.INF с помощью команды makecab в IEACCESS.IN_.

Чтобы удалить ярлык Outlook Express из меню "Пуск", надо:
1. Распаковать файл OEACCESS.IN_.
2. В секции [OEAccess] заменить строку "Run=ShowOE" на "Run=HideOE".
3. Запаковать OEACCESS.INF с помощью команды makecab В OEACCESS.IN_.

di2blo 31-10-2007 07:12 670117

Привет всем,подскажите пожалуста как добавит файл в дистрибутив чтоб после установки windows он был в system 32?извените если не по теме.

amel27 31-10-2007 07:45 670123

di2blo
путь на диске: $oem$\$$\System32\

подробно: http://oszone.net/2243

MKN 01-11-2007 11:32 670774

amel27,
Выложи пожалуйста куда нибудь утилиту DriverCompressor - с msfn.org никак не скачать...

amel27 01-11-2007 12:11 670800

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

AlexALSP 08-11-2007 16:39 674954

Скажите я так и не понял что делает эта утилита TimeCopy и куда она применяется, для коокй цели.

amel27 09-11-2007 04:08 675285

AlexALSP
Цитата:

что делает эта утилита TimeCopy
копирует метку времени (время изменения файла) между двумя файлами
Цитата:

куда она применяется, для коокй цели
некоторые утилиты от Microsoft сбрасывают при обработке время модификации файла в текущее, что затрудняет их последующее сравнение (для контроля версий), поэтому после обработки желательно восстанавливать исходное время модификации.

AlexALSP 09-11-2007 04:50 675293

amel27,

Понял. Спасибо за ответ.

idimm 21-12-2007 14:44 701260

Привет всем.Подскажите,пожалуйста,как после установки системы,автоматически и красиво перезагрузить систему?
Ну типа там,с каким нибудь выскакивающим окошком,т.е. с графическим интерфейсом.На Wiki в статье по перезагрузке,что то вроде того есть :
"Скрипт AutoIt
На основе сообщения _MPAK_ на форуме автоустановки. ",
Но ни самого МРАКа ни его сообщений не нашёл на форуме.
Может,кто нибудь выложить готовый к использованию файл(а не код),с указанием как использовать?
Заранее благодарю.

RenZo-2007 21-12-2007 16:39 701323

reset.cmd
Код:

cmdow @ /HID

shutdown.exe -r -f -t 30 -c "Я перезагружусь через 30 сек)"


EXIT

В блокноте напиши кодик этот и сохрани как .cmd файл.

idimm 21-12-2007 17:54 701362

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

VitRom 21-12-2007 18:24 701382

Цитата:

Цитата idimm
некоторых такое окошко пугает(типо-ошибка) »

Ну, тогда напиши
Код:

-c "Это НЕ ошибка! Всё путём! Я тут немного перезагружусь..." и т.д.
А ещё лучше перед вызовом shutdown запусти программку для открытия лотка компакт-диска (где-то на форуме пробегала), а вместо "Я перегружусь" напиши "Выньте копакт-диск и вложите на его место сложенную пополам чистую не мятую купюру достоинством ..." :)
Цитата:

Цитата idimm
комментарий у меня,почему то отображается,как крякозябры »

:lol: РТФМ, ключевое слово "кодировки"! :read:
Не считая Юникода, кириллица (русская) может быть или "Windows" (или ANSI, или 1251) или "DOS" (или OEM, или 866)

idimm 21-12-2007 19:09 701401

Цитата:

Цитата VitRom
А ещё лучше перед вызовом shutdown запусти программку для открытия лотка компакт-диска (где-то на форуме пробегала), а вместо "Я перегружусь" напиши "Выньте копакт-диск и вложите на его место сложенную пополам чистую не мятую купюру достоинством ..." »

Это всё ваши приколы,но если серьёзно,то наверняка существуют такие програмки или скрипты,что бы красиво перезагружаться.
Цитата:

Цитата VitRom
Цитата idimm:
комментарий у меня,почему то отображается,как крякозябры »
РТФМ, ключевое слово "кодировки"!
Не считая Юникода, кириллица (русская) может быть или "Windows" (или ANSI, или 1251) или "DOS" (или OEM, или 866) »

А здесь что смешного?Я пробовал в разной кодировке сохранять,всё равно-крякозябры.

Vadikan 21-12-2007 19:25 701409

Цитата:

Цитата idimm
Может,кто нибудь выложить готовый к использованию файл(а не код),с указанием как использовать? »

Так установите AutoIt и скомпилируйте скрипт в exe.

Цитата:

Цитата idimm
Я пробовал в разной кодировке сохранять,всё равно-крякозябры. »

Сохраняйте в
Цитата:

Цитата VitRom
"DOS" (или OEM, или 866) »


RenZo-2007 21-12-2007 19:35 701413

А по мойму красивее некуда. Всякие навороты могу пугать, а это вроде как стнадартное окно - ошибка=) У каждого свои подходы и методы. А Vadikan, кстати, идеи свежие подкидывает))

idimm 21-12-2007 20:23 701437

Цитата:

Цитата Vadikan
Так установите AutoIt и скомпилируйте скрипт в exe. »

Хоть в этом ничего не понимаю,но надо пробовать.
Цитата:

Цитата Vadikan
Сохраняйте в
Цитата VitRom:
"DOS" (или OEM, или 866) »

Извините,я ещё многого не понимаю,но у меня там файл можно сохранить только в:
1-ANSI
2-Юникод
3-Юникод Big Endian
4-UTF-8.
Где взять "DOS" (или OEM, или 866)???

boss911 21-12-2007 23:37 701528

Цитата:

Цитата idimm
Где взять "DOS" (или OEM, или 866)??? »

Воспользоваться сторонним редактором текста, например: AkelPad, а самый простой и доступный вариант, это FAR, открываем тестовый файл и сохраняем с нужной кодировкой.

Может, найдете, что-то новое в этой теме.

idimm 21-12-2007 23:37 701529

Вложений: 1
Цитата:

Цитата Vadikan
Так установите AutoIt и скомпилируйте скрипт в exe. »

Благодаря Vadikanу,начал химичить с AutoIt,о которой и понятия не имел и вот,что получилось:

Vadikan 25-12-2007 03:39 703296

Выполняя ваши просьбы, я добавил на сайт раздел Маленькие хитрости автоустановки и включил туда статьи, ссылки на которые также разместил в шапке.

truvo 13-01-2008 08:01 715423

По поводу применения regperm (по статье http://oszone.net/6162) - само по себе применение указанной в статье команды
REGPERM /K HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder /A:Everyone:R /Q
не дает (во всяком случае у меня) сортировки по алфавиту. Может, вместе с тем нужно что-то еще - например, удаление раздела реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder, о котором говорится выше в этой же статье?
В статье сказано, что применение команды закрепляет алфавитную сортировку (то есть не вводит ее?)
Если надо удалять раздел реестра, подскажите, как вообще удаляют раздел реестра при автоустановке?

Vadikan 13-01-2008 09:55 715453

truvo, да текущий порядок фиксируется, но предполагается, что он алфавитный - на Т-12, а вы когда выполняете?
Попробуйте
Код:


SET KEY=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder
REG DELETE %KEY%
REG ADD %KEY%
REGPERM /K %KEY% /A:Everyone:R /Q


truvo 13-01-2008 20:10 715826

У меня было так:
1) в HKCU.reg, импортируемом из cmdlines:
Код:

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Favorites]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu2]

2) в cmdlines команды:

"REGPERM /K HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder /A:Everyone:R /Q"
"REGEDIT /S hkcu.reg".

Вот и всё. Кстати, а последовательность команд, указанных в моем п. 2 выше, играет роль? Смутно подозреваю, что играет.

Еще два вопроса:

1) то, что рекомендуется в предыдущем посте, уже не требует применяемого мною твика в HKCU?

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

Vadikan 13-01-2008 20:16 715831

Да (на оба вопроса)

truvo 14-01-2008 00:55 716023

Цитата:

Цитата truvo
сунуть в cmdlines, или в cmd-файл »

Так на что в данном случае ответ "да" - первый вариант, второй, или не имеет значения?
Цитата:

Цитата truvo
последовательность команд, указанных в моем п. 2 выше, играет роль? »

По-моему, этот вопрос вы обошли вниманием?

Vadikan 14-01-2008 23:28 716966

Цитата:

Цитата truvo
2) в cmdlines команды:
"REGPERM /K HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder /A:Everyone:R /Q"
"REGEDIT /S hkcu.reg". »

Сначала вы установили права на раздел реестра, а потом его удалили, но все равно хотели, чтобы все работало. Потрясающе :)
Цитата:

Цитата truvo
Кстати, а последовательность команд, указанных в моем п. 2 выше, играет роль? Смутно подозреваю, что играет. »

Ну а как вы думаете? Вот вы масло на буханку намазываете, а потом отрезаете кусок, или все-таки сначала кусок отрезаете? :)

truvo 15-01-2008 00:41 716998

Цитата:

Цитата Vadikan
Потрясающе »

Кажется, изначально предполагается, что не все тут такие умные.

Вот так порой и я.

Однако догадывался же, коль писал "смутно подозреваю..."

А пример с маслом не совсем удачный - в том-то случае кусок с маслом всё равно съедается, как ни крути...

А на мой вопрос
Цитата:

Цитата truvo
в cmdlines, или в cmd-файл »

вы так и не ответили. Опять. Пока что я вписал эти строки (из вашего поста 163) прямо в cmdlines, но на практике проверить не успел...

Boa Soft 15-01-2008 00:56 717006

Создание OEM Link - ярлыка-ссылки производителя компьютера. Находится в меню пуск ниже пункта "Выполнить...".

MS утверждает, что это можно сделать только при помощи фабричной установки через winbom.inf и невозможно удалить.


Это не совсем верно.

Вот проверенный код:

factory.inf

Код:

[Version]
signature = $CHICAGO$
SetupClass=BASE

[DefaultInstall]
AddReg    = FLink.AddReg



[FLink.AddReg]
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}",,0x00000000,%LinkName%
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}","InfoTip",0x00000000,%LinkTip%
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\DefaultIcon",,0x00020000,%IconName%
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\InProcServer32",,0x00020000,"%SystemRoot%\system32\shdocvw.dll"
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\InProcServer32","ThreadingModel",0x00000000,"Apartment"
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\Instance","CLSID",0x00000000,"{3f454f0e-42ae-4d7c-8ea3-328250d6e272}"
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\Instance\InitPropertyBag","CLSID",0x00000000,"{13709620-C279-11CE-A49E-444553540000}"
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\Instance\InitPropertyBag","method",0x00000000,"ShellExecute"
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\Instance\InitPropertyBag","Command",0x00000000,%LinkName%
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\Instance\InitPropertyBag","Param1",0x00020000,%FileName%
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\shellex\ContextMenuHandlers\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}",
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\shellex\ContextMenuHandlers\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}",,0x00000000,""
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\shellex\MayChangeDefaultMenu",,0x00000000,""
HKCR,"CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\ShellFolder","Attributes",0x00010001,0

HKCU,"Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached","{2559A1F6-21D7-11D4-BDAF-00C04F60B9F0} {00000000-0000-0000-C000-000000000046} 0x401",0x00000001, 01,00,00,00,39,00,34,00,28,38,37,b0,1d,53,c8,01
HKCU,"Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached","{2559A1F6-21D7-11D4-BDAF-00C04F60B9F0} {000214E8-0000-0000-C000-000000000046} 0x401",0x00000001, 01,00,00,00,39,00,34,00,ea,23,43,b0,1d,53,c8,01
HKCU,"Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached","{2559A1F6-21D7-11D4-BDAF-00C04F60B9F0} {000214E6-0000-0000-C000-000000000046} 0x401",0x00000001, 00,00,00,00,39,00,34,00,28,ec,fb,b4,1d,53,c8,01

HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartMenu\StartPanel\ShowOEMLink","NoOEMLinkInstalled",0x00010001,0
HKCU,"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Start_ShowOEMLink",0x00010001,1


[STRINGS]
LinkName = "Вас приветствует Fabrikam"       
LinkTip  = "Щелкните для получения дополнительных сведений о Fabrikam."
IconName = "C:\WINDOWS\OEM\oem.ico"
FileName = "C:\WINDOWS\OEM\oem.txt"

В секции STRINGS подставьте реальные имена и пути.
Цитата:

Цитата Vadikan
Например, в качестве значения параметра FileName можно указать URL, заключенный в кавычки, конечно.

В отличии от раннее приводившегося сдесь примера и примера с MSFN тут содержатся все необходимые значения, чтобы появился и работал пункт в настройках меню пуск (Ссылка на изготовителя) для скрытия и отображения этого пункта меню :).

PS

Из командной строки (или из cmdlines/guirunonce) можно установить таким образом:

Код:

RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 <полный путь к inf-файлу>\Factory.INF
В пути, как всегда, избегайте пробелов и спецсимволов, иначе придется заключать путь с именем в кавычки.
В cmdlines переменные окружения не поддерживаются.

samsobi 15-01-2008 10:29 717163

Цитата:

Цитата truvo
Кажется, изначально предполагается, что не все тут такие умные. »

Зачем же так обижаться? Вам же все четко ответили - вы сначала запрещаете работать с разделом, а потом удаляете ветки его. Логично ведь наоборот - удалите ветки, затем запретите изменять раздел. Тем самым вы зафиксируете свои изменения. А куда вставлять эти строки - в cmd или cmdlines, из которого будет запускаться cmd, должно быть глубоко фиолетово. Ведь все-равно строки должны выполнятся на Т-12.Вот сами и попробуйте, а потом огласите, как оно 8-)))

Vadikan 16-01-2008 00:49 717942

Цитата:

Цитата samsobi
Логично ведь наоборот - удалите ветки, затем запретите изменять раздел »

Если раздел удален, то перед назначением прав его нужно создать. А так, все верно.




Boa Soft, да вроде поднимался этот вопрос уже... я давал ссылку http://www.msfn.org/board/Manufactur...nu-t51830.html - достаточно простой твик реестра.

samsobi 16-01-2008 08:36 718057

Цитата:

Цитата Vadikan
Если раздел удален, то перед назначением прав его нужно создать. А так, все верно »

Я просто пользуюсь старым твиком, где удаляются не раздел, а его ветки - поэтому и разночтения. И еще: у Вас, наверное, стоит англоязычная винда. Для русской надо Everyone поменять на Все, а то не найдет такого юзера/группы 8-(((

Цитата:

REGPERM /K %KEY% /A:Все:R /Q
и ессно в ДОС кодировке.

Boa Soft 18-01-2008 18:53 720211

Vadikan,
Цитата:

Цитата Vadikan
Boa Soft, да вроде поднимался этот вопрос уже... я давал ссылку http://www.msfn.org/board/Manufactur...nu-t51830.html - достаточно простой твик реестра. »

Да, оно. Просто увидел на обном бренде добавление через твик реестра и перевел в inf.

Проблема в том, что EXPAND_EZ в виде reg-файла практически не поддается редактированию, в отличии от inf.

К тому же, там не все - у меня внесены данные, что позволяет убирать/показывать ярлык из настроек меню пуск.

Vadikan 18-01-2008 19:13 720218

Boa Soft, добавь, плиз, в тот пост команду для установки inf-файла, чтобы решение было полным, а то не все знают, как это сделать.

Vadikan 08-02-2008 20:24 736101

Boa Soft, спасибо!
Создание собственного OEM-ярлыка в меню "Пуск"

kasa1963 09-02-2008 10:39 736425

Привет всем , по поводу применения regperm пробовал это:
Цитата:

Цитата Vadikan
SET KEY=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder
REG DELETE %KEY%
REG ADD %KEY%
REGPERM /K %KEY% /A:Everyone:R /Q »

и это:
REGPERM /K HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder /A:Everyone:R /Q

Мой cmdlines.txt:

Код:

[Commands]
"ROE.exe 937"
"RunOnceEx.cmd"
"rundll32 advpack.dll,LaunchINFSection nLite.inf,U"
".\WinMUI\muisetup.exe /i 0419 /i 040d /l /f /r /s"
".\WinMUI\WindowsXP-KB841625-x86MUI-RUS.exe /quiet /norestart"
".\WinMUI\WindowsXP-KB841625-x86MUI-HEB.exe /quiet /norestart"
".\WinMUI\mm21_muirus.exe /Q"
".\WinMUI\mm21_muiheb.exe /Q"
".\WinMUI\wmp11setup_muirus.exe /Q"
".\WinMUI\wmp11setup_muiHeb.exe /Q"
".\WinMUI\IE7MUI-x86-enu.exe /Q"
"Themes"
"REGEDIT /S RegTweaks.reg"
"SET KEY=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder
REG DELETE %KEY%
REG ADD %KEY%
REGPERM /K %KEY% /A:Everyone:R /Q"

В "RegTweaks.reg" не прописано:

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Favorites]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu2]

Вот мой Winnt.sif

Код:

; Generated by nLite 1.4.1

[Data]
AutomaticUpdates="No"
Autopartition=0
UnattendedInstall="Yes"
MsDosInitiated=No

[Unattended]
UnattendMode=DefaultHide
UnattendSwitch="No"
OemSkipEula="Yes"
FileSystem=*
WaitForReboot="No"
NoWaitAfterTextMode=1
NoWaitAfterGUIMode=1
DriverSigningPolicy=Ignore
NonDriverSigningPolicy=Ignore
Hibernation="No"
OemPreinstall=Yes

[Display]
Xresolution=1024
Yresolution=768
BitsPerPel=32
Vrefresh=60

[SystemRestore]
DisableSR=1
CreateFirstRunRp=0

[GuiUnattended]
EncryptedAdminPassword="No"
AutoLogon="Yes"
AutoLogonCount=1
AdminPassword=*
TimeZone=135
OEMSkipRegional=1
OemSkipWelcome=1

[Components]

[UserData]
ProductKey="*****-*****-*****-*****-*****"

[RegionalSettings]
LanguageGroup = 5,12
SystemLocale=00000419
UserLocale=00000419
UserLocale_DefaultUser=00000419
InputLocale=0409:00000409,0419:00000419,040d:0000040d
InputLocale_DefaultUser=0409:00000409,0419:00000419,040d:0000040d
Language = "0419"

[Networking]
InstallDefaultComponents="Yes"

[Shell]
CustomDefaultThemeFile=%SystemDrive%\WINDOWS\Resources\Themes\IllumeCG.theme

[WindowsFirewall]
Profiles=WindowsFirewall.TurnOffFirewall

[WindowsFirewall.TurnOffFirewall]
Mode=0

[Identification]
JoinWorkgroup="Home"

Дистр-в английский.Установка Windows полуавтоматическая (имя User вводится вручную).После первого входа в систему делаю перезагрузку.
Наблюдается следующее - после инсталлирования 4 - 5 программ , при инсталляции следующей автоматическая сортировка меню уже не работает!!!
В чем может быть причина?
Помогите пожалуйста.
Спасибо!!!!

linuxsanek 13-02-2008 15:37 739401

в дополнение к Замена Boot Screen-на

изменение boot.ini:
boot.cmd

CMDOWN @ /HID
echo off

IF NOT EXIST "%SystemDrive%\boot.bak" GOTO ERROR

REM если нет беккапа, то делаем. так как при переустановке будет кака

attrib -A -S -R -H %SystemDrive%\boot.ini
IF EXIST "%SystemDrive%\boot.ini" del %SystemDrive%\boot.ini
copy /Y %SystemDrive%\boot.bak %SystemDrive%\boot.ini
attrib +A +S +R +H %SystemDrive%\boot.ini

REM ставим свои названия и параметры для загрузки Boot Screen

BOOTCFG /Copy /D "WindowsXP LanserX Edition" /ID 1
BOOTCFG /Copy /D "WindowsXP LanserX Edition BootScreen" /ID 1
BOOTCFG /DELETE /ID 1
BOOTCFG /TIMEOUT 10
BOOTCFG /addsw /NG /ID 2
BOOTCFG /raw "/bootlogo" /a /ID 2
BOOTCFG /default /ID 2

GOTO END

:ERROR

REM если есть беккап, то возвращаем в первоначальное состояние. так как при переустановке будет кака

attrib -A -S -R -H %SystemDrive%\boot.ini
copy /Y %SystemDrive%\boot.ini %SystemDrive%\boot.bak
attrib +A +S +R +H %SystemDrive%\boot.ini

REM ставим свои названия и параметры для загрузки Boot Screen

BOOTCFG /Copy /D "WindowsXP LanserX Edition" /ID 1
BOOTCFG /Copy /D "WindowsXP LanserX Edition BootScreen" /ID 1
BOOTCFG /DELETE /ID 1
BOOTCFG /TIMEOUT 10
BOOTCFG /addsw /NG /ID 2
BOOTCFG /raw "/bootlogo" /a /ID 2
BOOTCFG /default /ID 2

:End


при переустановке Винды и при новой установке в конце строки с параметром "/bootlogo" больше не будет дублироваться при многократном использовании данного CMD файла. Раньше был глюк например:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WindowsXP BootScreen" /noexecute=optin /fastdetect /noguiboot /bootlogo /noguiboot /bootlogo

Vadikan 13-02-2008 19:00 739571

kasa1963, последние четыре строки cmdlines.txt замените на "menu_order.cmd" и скопируйте их в этот файл. Нельзя таким образом запускать команды из cmdlines... И что там за "Themes" тоже непонятно, но это уже другой вопрос.

kasa1963 13-02-2008 21:33 739677

Цитата:

Цитата Vadikan
последние четыре строки cmdlines.txt замените на "menu_order.cmd" »

Спасибо , попробую!!!
Цитата:

Цитата Vadikan
И что там за "Themes" »

Это SFX - архив с доп. темами и визуальными стилями

pupsicas 16-02-2008 18:07 741656

Пдскажите кто нибуть пожалуйста с какими ключи надо прописать в CMD чтобы не скопировать а переместить папку и файлы из одного места в другое.
Вроде этого: (XCOPY "%SystemDrive%\Папка\*.*" "%SystemDrive%\" /y /i /e /h) только мне надо типо так (CUT или MOVE to "%SystemDrive%\Папка\*.*" "%SystemDrive%\" /y /i /e /h).
Искал но не где не нашёл.

boss911 16-02-2008 22:59 741954

pupsicas

Код:

MOVE /?

pupsicas 16-02-2008 23:12 741958

Спасибо тебе boss911, добрый человек.

YikxX 17-02-2008 09:35 742137

Такой вопрос: Если я на этапе отработки svcpack.inf запущу reg-файлик с таким ключом
Код:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runonce]
"111"="%systemdrive%\1\installs.cmd"

то запись в реестр добавится или нет? Под установленной виндой чего-то не добавляется. :( Просто надо добавить эту строчку при установке аддона из SVCPACK и через winnt.sif и т.п., понятное дело, это делать неприемлимо...

z-wer 17-02-2008 22:45 742651

Вложений: 1
Может кому пригодится маленькая програмка для перезагрузки компа?
Только куда слить не знаю.
90 кило. Так для себя наваял. Все тихо и без всяких предупреждений система уходит в ребут.

VitRom 18-02-2008 13:13 742987

Цитата:

Цитата YikxX
"111"="%systemdrive%\1\installs.cmd" »

IMHO переменные должны вноситься в другой тип -- не в REG_SZ (строку), а в REG_EXPAND_SZ...

"reg /?" как вариант

Droperidolum 29-02-2008 05:19 750350

Если я правильно понял, то здесь было указано что подобный батник (в оригинале применяемый для CD-Rom и далее оптимизированный) можно применить и к назначению букв разделов на жёстком диске.
Можно поподробнее для неграмотных?
Скажем есть 4 раздела впорядке их расположения - Pagefile (active), System, Bench, Data, ну они после установки превращаются в C- Pagefile, D- System, E- Bench, F- Data. А надо чтобы было C - System, D - Data, E- Bench, P -Pagefile.
Желательно это сделать в процессе установки, но с удовольствием попробую способ как это сделать на уже установленной винде.

Zetoke 02-03-2008 13:58 751752

Запуск исполняемого файла или пакетного файла с CD/DVD через svcpack.inf при первой загрузке:
(под редакцией Vadikan'a)
Создаем CMD файл (например в блокноте)
Код:

:: Укажите путь к папке, в которой находится исполняемый файл, относительно корня компакт-диска
SET folder=install
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 if exist %%i:\WIN51 set exepath=%%i:\%folder%
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\999 /V 1 /D "%exepath%\file.exe" /f

Сохраняем как runonceex.cmd и копируем в папку I386\SVCPACK
Теперь в файле svcpack.inf в секции [SetupHotfixesToRun] прописываем название созданного нами файла. Также в секции [SetupData] параметр CatalogSubDir должен иметь такое значение "\I386\SVCPACK"
HTML код:

[Version]
Signature="$Windows NT$"

[SetupData]
CatalogSubDir="i386\SVCPACK"

[ProductCatalogsToInstall]

[SetupHotfixesToRun]
runonceex.cmd

Наш файл запустится на T13 (за 13 минут до конца установки) и добавит ключ в реестр в секцию RunOnceEx. И при первой загрузке системы с вашего установочного диска запустится испонительный или пакетный файл, который мы указали в созданном нами файле.
Примечания:
1. В строке
Код:

SET folder=install
на свои значения можно поменять следующее:
Здесь нужно указать свой путь к дирректории, которая будет содержать файл, запускаемый нами при первом в ходе в систему (при этом SET folder не трогаем).
2. В строке
Код:

REG ADD %KEY%\999 /V 1 /D "%exepath%\file.exe" /f
можно поменять название файла file.exe на имя файла, который будем запускать после установки (файл может буть не только исполнительным, но и пакетным (.cmd или .bat).
Применение:
1. Можно для запуска программы установки приложений (например WPI ).
2. Для удаления ненужных файлов и папок после установки ОС без использования папок OEM (см. следующий мой пост)

Zetoke 02-03-2008 14:22 751767

Удаление ненужных файлов и папок после установки ОС через svcpack.inf
1. Создается пакетный файл для удаления (как это сделать)
2. Копируем этот файл в дирректорию, которая будет находится на компакт-диске.
3. Теперь создаем CMD файл по принципу, указанному в предыдущем посте (чтобы наш пакетный файл запустился при первой загрузке, и ненужные файлы и папки удалились).

Vadikan 02-03-2008 22:07 752013

Master Fess, так может сразу сделать
Код:

:: Укажите путь к папке, в которой находится исполняемый файл, относительно корня компакт-диска
SET folder=install
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 if exist %%i:\WIN51 set exepath=%%i:\%folder%
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\999 /V 1 /D "%exepath%\file.exe" /f

И желательно привести пример файла svcpack.inf, чтобы было наглядно, где и что прописано.

По поводу
Цитата:

Цитата Master Fess
Удаление ненужных файлов и папок после установки ОС без использования папок OEM »

получается похоже на
Цитата:

...игла в яйце, яйцо в утке, утка в зайце... (с)
:) Зачем пакетный файл в SFX помещать?

Vadikan 07-03-2008 03:27 755139

Добавлена статья Использование файла svcpack.inf для установки программ и импорта твиков реестра. Я код упростил немного и добавил информацию об импорте твиков. Замечания/предложения?

Drinko 07-03-2008 04:05 755140

Цитата:

Цитата Vadikan
Замечания/предложения? »

Код:

:: Определяем букву компакт-диска
SET CDROM=%~d0

Иногда не срабатывает, см. здесь

Vadikan 07-03-2008 21:04 755588

Цитата:

Цитата Drinko
Иногда не срабатывает »

Понятно, но тогда точно так же не сработает и
Код:

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 if exist
в случае нахождения доп. дисковых устройств после Т13/Т12. То есть та же проблема будет наблюдаться и в Запуск RunOnceEx с CD. Можно примечание добавить в обе статьи, поскольку setenv описана тут

Zetoke 16-03-2008 12:51 761560

Vadikan, А Вы пробовали так сказать вскрывать аддон SetEnvCD? Дело в том что весь аддон состоит из вот этого CMD файла
Код:

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 if exist %%i:\WIN51 set CDROM=%%i: 
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v cdrom /d %CDROM% /f

Так если
Цитата:

Цитата Vadikan
Понятно, но тогда точно так же не сработает и
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 if exist »

Тогда и SetEnv не сработает :)

Vadikan 16-03-2008 22:20 761828

Master Fess, гм... я не продумал этот вопрос. Получается, что если буквы дисков смещаются после Т-12, то и "постоянная" переменная будет указывать на неверную букву.

Меня вообще смущает момент с этими "дисковыми устройствами", я просто положился на "опыт сообщества". В моем представлении система сначала назначает буквы жестких дисков, затем оптических, и наконец съемных. На Т-12 жесткие и оптические должны уже определиться, поэтому я не совсем представляю, как впоследствии найденные устройства могут вклиниться перед уже определенной буквой CD/DVD привода... Я с таким не сталкивался... Однако это не означает, что такого не происходило никогда. У кого-то есть реальные примеры?

Zetoke 17-03-2008 17:59 762296

Vadikan, Я тоже не представляю себе как это может случится.

Vadikan 17-03-2008 19:26 762346

Я почитал [addon] SetEnvCD - там таких примеров хватает. В общем, я примечание исправлю, а обсуждение назначения буквы CD-ROM в таких условиях логично продолжить в теме аддона, раз уже там отправили полсотни постов.

Zetoke 28-03-2008 23:17 770163

Vadikan, По статье. Проблема с переназначением после перезагрузки я так понял присутствует в обоих случаях. Но предложенный вами вариант также иногда не работает на двухъядерных компьютерах (по указанной Drinko выше ссылке). Так что мой вариант будет более пригодным.

alexy 04-06-2008 11:55 818127

Цитата:

Код:
Код:


SET KEY=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder
REG DELETE %KEY%
REG ADD %KEY%
REGPERM /K %KEY% /A:Everyone:R /Q


После применения REGPERM сортировка всё равно не фиксируется. А всё потому, что права не наследуются. Попытка задать наследование вручную заканчивается сообщением о невозможности выполнить действие.

Vadikan 04-06-2008 18:59 818352

Цитата:

Цитата alexy
После применения REGPERM сортировка всё равно не фиксируется. »

У меня все чудесно фиксировалось и работало на протяжении многих месяцев. Тестировать сейчас не могу, т.к. уже давно на Vista работаю. Предлагайте альтернативное решение...

alexy 04-06-2008 22:50 818529

Цитата:

Цитата Vadikan
У меня все чудесно фиксировалось и работало на протяжении многих месяцев »

Тады на какой стадии ставил? T-12? Если да, то каков порядок, что должно быть обязательно после команды, а что до?
Кстати, у REGPERM есть ключ /R.
Цитата:

Цитата Vadikan
Предлагайте альтернативное решение... »

Завтра восстановлю состояние VPC, продолжу установку, проверю.

alexy 06-06-2008 22:52 820388

Поставил вызов regperm первой строкой в CMDLINES.TXT - заработало!

Vadikan 06-06-2008 23:26 820420

alexy, странно, что от местоположения команды меняется рез-т, но главное - что все работает :)

alexy 30-07-2008 09:11 864214

Интересно, а на кой вообще удалять что-то, чего ещё нет? Вы в пошаговом режиме-то проверяли?

Vadikan 30-07-2008 09:22 864223

Цитата:

Цитата alexy
Вы в пошаговом режиме-то проверяли? »

Нет, не проверял и не собираюсь... А вы проверили и убедились, что там ничего нет? Из вашего собщения это неясно. Добавьте REG EXPORT перед REG DELETE для проверки.

alexy 30-07-2008 12:58 864353

Цитата:

Цитата Vadikan
А вы проверили и убедились, что там ничего нет? »

Достаточно не скрывать окно и видно сообщение, мол такого ключа нет.

ger_kar 07-08-2008 10:35 870074

Вложений: 2
Мне приходится часто собирать автоустановочные дистрибутивы с WinXP,
включая последние версии драйверов, приложений, DirectX и т.д. и для
того чтобы этот процесс упростить я использую свою утилиту (прилагается).
Суть моего метода создания или изменения дистрибутива состоит в том,
что я размещаю эту утилиту в $OEM$ директории, а в файле CmdLines.txt указываю
только одну строку на запуск этой утилиты. Суть работы этой утилиты
заключается в том, что она проверяет директорию откуда она запущена и если
это $OEM$ то она запускает из этой директории *.exe, *.cmd, *.bat, *.vbs
и *.js
файлы, а также импортирует reg файлы все которые найдет (без рекурсии
по вложенным директориям). Далее она по маркеру WIN51 определяет дистрибутив,
находит папку Install и сканируя её рекурсивно выявляет все приложения для
автоустановки и формирует секцию RunOnceEx. Используя этот метод достаточно
поместить нужный файл в директорию $OEM$ и все, не нужно ничего никуда прописывать,
единственное условие чтобы файл запускался без ключей (т.е. например саморапаковыва
ющийся архив и т.п.) все файлы запускаются в срытом режиме, т.е. без вывода окон.
Приложения для автоустановки я помещаю в папку Install, размещая каждое приложение
в отдельной папке, имя этой папки используется для отображения названия приложения в
секции RunOnceEx. Если установочный файл поместить непосредственно в папку Install, то
название будет сформировано из имени запускаемого файла. Утилита ищет все файлы
удовлетворяющие маскам
Un_*.[ext], Un *.[ext], Auto_*.[ext], Auto *.[ext], AutoSetup*.[ext], AutoInstall*.[ext], Silent*.[ext],
- где [ext] одно из расширений exe, cmd, bat, vbs, js или reg.
Утилиту можно использовать и в другом режиме - без секции RunOnceEx. Если поместить её в корневую папку для автоутанавливаемых приложений и запустить,
то она просканируя рекурсивно корневую и все вложенные папки найдет
все приложения для автоустановки сформирует из них список отображаемый на экране
и запустит эти приложения на автоустановку, поочередно, согласно списка.
После сканирования запускается таймер на 15 сек и если за это время пользователь не
производит никаких действий то через 15 сек запустится автоустановка.
В течении этого времени можно убрать ненужные приложения сняв соответствующие
отметки, таймер в этом случае останавливается и запуск осуществляется нажатием
на соответствующую кнопку.
При сканировании директорий папка I386 игнорируется.
Если поиск должен осуществляться по другому маркеру, отличному от WIN51,
то его можно указать как параметр запуска утилиты,
например. ASetup.exe /AutoSetup\Soft маркером может быть как название файла, так и
имя папки.

kudanax 01-09-2008 19:45 888686

Цитата:

Цитата ger_kar
Далее она по маркеру WIN51 определяет дистрибутив,
находит папку Install »

Утилита понравилась, содержимое папки $OEM$ отрабатывает полностью,
а вот с папкой Install, я как мартышка с очками, ни как не пристрою.
Подскажите где именно должна находится папка Install,
чтобы запуск происходил из RunOnceEx

P/S Утилита папку Install ищет автоматом
или нужно в cmdlines.txt прописывать путь к папке полностью .

aats 10-10-2008 20:13 920798

Чтобы не создавались некоторые пустые папки, нужно в файле TXTSETUP.SIF в секции [WinntDirectories] удалить строки:
Код:

14 = system32\wins
19 = system32\drivers\disdn
15 = system32\dhcp
59 = system32\mui\dispspec
77 = system32\oobe\sample
47 = system32\export
100 = system32\1025
101 = system32\1028
102 = system32\1031
104 = system32\1037
105 = system32\1041
106 = system32\1042
107 = system32\1054
108 = system32\2052
109 = system32\3076
180 = system32\3com_dmi
37 = addins
38 = "Connection Wizard"
123 = mui
137 = ime\imejp98
132 = ime\imejp
138 = ime\imejp\applets
67=Help\Tours
91=Help\Tours\mmTour
92=Help\Tours\htmlTour


samsobi 11-10-2008 10:04 921105

Цитата:

Цитата kudanax
Подскажите где именно должна находится папка Install,
чтобы запуск происходил из RunOnceEx »

Как в учебнике по автоустановке нарисовано: $OEM$\$1\Install\

ger_kar 25-10-2008 20:16 933510

Цитата kudanax:
Цитата:

Подскажите где именно должна находится папка Install,
чтобы запуск происходил из RunOnceEx »
У меня она находится в корне диска (например E:\Install) и WIN51 соответственно тоже.
Если папка должна находиться в другом месте или название папки отличается то можно
ее указать, как параметр запуска утилиты. Путь указывать относительно корня диска
Например: если папка из которой должна производиться установка
находится E:\Distr\Soft , то необходимо запустить утилиту с таким параметром
ASetup.exe /Distr\Soft

zeroua 25-10-2008 20:24 933514

aats, Vadikan, может ли удаление данных строк повлиять на стабильность системы в целом?!

Код:

14 = system32\wins
19 = system32\drivers\disdn
15 = system32\dhcp
59 = system32\mui\dispspec
77 = system32\oobe\sample
47 = system32\export
100 = system32\1025
101 = system32\1028
102 = system32\1031
104 = system32\1037
105 = system32\1041
106 = system32\1042
107 = system32\1054
108 = system32\2052
109 = system32\3076
180 = system32\3com_dmi
37 = addins
38 = "Connection Wizard"
123 = mui
137 = ime\imejp98
132 = ime\imejp
138 = ime\imejp\applets
67=Help\Tours
91=Help\Tours\mmTour
92=Help\Tours\htmlTour


Vladimir2k7 26-10-2008 08:54 933866

не должно повлиять, потому что все эти папки пустые после установки и легко удаляются вручную.
только вот
37 = addins
у меня не пустая, там был у меня файл, и появился он помоему после настройки факса


Время: 07:31.

Время: 07:31.
© OSzone.net 2001-