Главная
Форумы
Новые сообщения
Поиск сообщений
Что нового?
Новые сообщения
Новые ресурсы
Последняя активность
Ресурсы
Последние отзывы
Поиск ресурсов
Помощь форуму
ЧатTG
Вход
Регистрация
Что нового?
Поиск
Поиск
Искать только в заголовках
От:
Новые сообщения
Поиск сообщений
Меню
Вход
Регистрация
Приложение
Установить
Форумы
Форум программистов
Пакетные файлы CMD, BAT
Есть способ хранить несколько reg-файлов в скрипте?
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать
другой
.
Ответить в теме
Сообщение
[QUOTE="Dragokas, post: 158704, member: 6966"] [COLOR=Gray]Извини, не могу с нормальной скоростью писать батники, пока не решу [URL='http://www.cyberforum.ru/windows7/thread669731.html']эту[/URL] проблему.[/COLOR] Т.е. ты хочешь без изменения текста оригинальных REG-файлов просто скопировать их в батник. Их него же и вызывать. Думаю, без предварительной распаковки не получится. Вот такую функцию написал: [php]@echo off SetLocal EnableExtensions EnableDelayedExpansion call :RegKeyExecute SetConsoleColor pause call :RegKeyExecute SetDefaultKeyboardLayout_EN pause exit /B :RegKeyExecute [Имя ресурса] For /F "tokens=1 delims=[]" %%? in ('find /i /n "%~1 begin" ^< "%~f0"') do set LineFrom=%%?& set /A LineFrom+=1 For /F "tokens=1 delims=[]" %%? in ('find /i /n "%~1 end" ^< "%~f0"') do set LineUntil=%%?& set /A LineUntil-=1 For /L %%C in (%LineFrom%, 1, %LineUntil%) do set "txtmask=!txtmask!\[%%C\] " (for /f "tokens=1* delims=]" %%a in ('find /v /n "" ^<"%~f0"^| findstr /B "%txtmask%" 2^>nul') do Echo=%%b)> "%temp%\my_key.reg" REG IMPORT "%temp%\my_key.reg"& >nul del "%temp%\my_key.reg" Exit /B ====================== :SetConsoleColor begin Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console] "ScreenColors"=dword:0000001a [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] "ScreenColors"=dword:0000001a :SetConsoleColor end ==================== ================================== :SetDefaultKeyboardLayout_EN begin Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Keyboard Layout\Preload] "1"="00000409" :SetDefaultKeyboardLayout_EN end ================================[/php] [spoiler="Комментарий к коду"][php]@echo off :: EnableExtensions - Включаем поддержку ключей For /F, For /L :: EnableDelayedExpansion - Включаем поддержку раскрытия переменных через (!) SetLocal EnableExtensions EnableDelayedExpansion :: Вызываем функцию RegKeyExecute с аргументом SetConsoleColor call :RegKeyExecute SetConsoleColor pause :: Вызываем функцию RegKeyExecute с аргументом SetDefaultKeyboardLayout_EN call :RegKeyExecute SetDefaultKeyboardLayout_EN pause exit /B :RegKeyExecute [Имя ресурса] :: Записывает в переменную LineFrom номер строки, в которой находится текст [Имя ресурса] + ключевое слово "begin", set /A ...+1 начало на одну строку ниже For /F "tokens=1 delims=[]" %%? in ('find /i /n "%~1 begin" ^< "%~f0"') do set LineFrom=%%?& set /A LineFrom+=1 :: Записывает в переменную LineUntil номер строки, в которой находится текст [Имя ресурса] + ключевое слово "end", set /A ...-1 конец на одну строку выше For /F "tokens=1 delims=[]" %%? in ('find /i /n "%~1 end" ^< "%~f0"') do set LineUntil=%%?& set /A LineUntil-=1 :: Записывает в переменную txtmask номера строк этого файла, где находится читаемый Reg For /L %%C in (%LineFrom%, 1, %LineUntil%) do set "txtmask=!txtmask!\[%%C\] " ( :: Нумерует строки всего файла, а потом фильтрует только те, что в переменной txtmask for /f "tokens=1* delims=]" %%a in ('find /v /n "" ^<"%~f0"^| findstr /B "%txtmask%" 2^>nul') do Echo=%%b :: и записывает текст из этих строк во временную папку, в файл my_key.reg )> "%temp%\my_key.reg" :: Применяет ключевой файл реестра REG IMPORT "%temp%\my_key.reg"& >nul del "%temp%\my_key.reg" :: Возвращается в точку вызова подпрограммы Exit /B :: Просто разделитель для наглядности ====================== :: Здесь пишем произвольное имя, по которому будем идентифицировать + дописываем к нему знак пробела и ключевое слово "begin" :SetConsoleColor begin Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console] "ScreenColors"=dword:0000001a [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] "ScreenColors"=dword:0000001a :: в конце делаем тоже самое, но дописываем слово "end" :SetConsoleColor end ==================== ================================== :SetDefaultKeyboardLayout_EN begin Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Keyboard Layout\Preload] "1"="00000409" :SetDefaultKeyboardLayout_EN end ================================[/php][/spoiler] [/QUOTE]
Вставить цитаты...
Проверка
Ответить
Форумы
Форум программистов
Пакетные файлы CMD, BAT
Есть способ хранить несколько reg-файлов в скрипте?
Сверху
Снизу