Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/47: Рейтинг темы: голосов - 47, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 20

Чтение файла настроек .ini

31.01.2019, 23:01. Показов 9763. Ответов 30

Студворк — интернет-сервис помощи студентам
Необходимо считать данные из файла настроек (например data.ini) и на основе полученного выполнить код. Допустим, в настройках есть два блока со списком данных, а в bat-файле два цикла, соответствующих этим двум блокам. Вот сам файл настроек:
[FIRST_BLOCK]
one
two
three
four

[SECOND_BLOCK]
six
seven
nine
ten
eleven


И вот скрипт командной строки (надеюсь, идея ясна, со скриптами не очень дружу, поэтому нормально не напишу):
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
 
rem Читаем файл настроек
call :read_settings data.ini
 
rem На месте этого недоразумения (file::FIRST_BLOCK) должна быть
rem ссылка/указатель на соответствующий блок в файле настроек
for %%i in (file::FIRST_BLOCK) do (
    echo string[%%i]
    rem string[%%i] означает: нужно считать i-тую строку
    rem из обрабатываемого на данный момент блока
)
 
rem На месте этого недоразумения (file::SECOND_BLOCK) должна быть
rem ссылка/указатель на соответствующий блок в файле настроек
for %%i in (file::SECOND_BLOCK) do (
    echo string[%%i]
    rem string[%%i] означает: нужно считать i-тую строку
    rem из обрабатываемого на данный момент блока
)
То есть, в данном примере первый цикл должен напечатать (можно загнать в переменную) каждую строку из первого блока файла настроек (каждый раз на новой строке), а второй цикл - все строки из второго блока.
Для чего все это нужно: убить процесс (не один), имя которого берется из .ini файла.

В крайнем случае, подскажите хотя бы, как в скриптах можно сослаться на определенную строку в определенном блоке файла настроек.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2019, 23:01
Ответы с готовыми решениями:

Замена целой строки в ini файле настроек
здравствуйте, нужно редактировать ini файл. есть параметр "Pause150zvonkov=653" это 206 строчка. нужно редактировать значение например...

Поиск на компьютере INI-файла и копирование найденного файла в папку определенного пользователя
Нужна ваша помощь! Нужно найти файл с расширением .ini и скопировать его в папку Пользователи\(имя пользователя. на каждом компьютере...

Создание файла INI из файла cmd/bat итд
Доброго времени суток. Есть задача - Создать файл с указанием параметра Х Есть пусть к файлу...

30
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
31.01.2019, 23:41
Цитата Сообщение от Андрей Даев Посмотреть сообщение
определенную строку в определенном блоке файла
непросто в cmd, обязательно надо видеть файл в живую и кодировка еще может дать тормоз и размер файла.
0
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 20
01.02.2019, 00:05  [ТС]
Допустим, файл настроек лежит рядом с батником в папке C:\Documents, размер .ini не превышает 1кб, кодировка utf-8, батник - 1кб, ANSI. И представим, что на скрине нет полос прокрутки (то есть, допустим, что это весь код). На скрине слева батник, справа .ini
Миниатюры
Чтение файла настроек .ini  
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 00:23
Цитата Сообщение от Андрей Даев Посмотреть сообщение
Для чего все это нужно: убить процесс (не один), имя которого берется из .ini файла.
Главное не написали. Почему берётся именно оттуда, а не указывается в самом батнике?
0
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 20
01.02.2019, 00:35  [ТС]
У меня сейчас довольно большой список процессов и служб, которые я рублю/изменяю тип запуска и пр. (сейчас вручную батник запускаю (с предельно простыми командами), потом думаю службу сделать, чтоб на автомате). И этот список постоянно растет (долбаная прекрасная десятка с её телеметриями, индексаторами, обновлениями и куча софта). Вот я и подумал, что удобнее будет весь этот список держать и редактировать в отдельном файле. Причем не переделывать каждый раз батник, например, при добавлении службы с необычным названием, а просто вписать в .ini файл имя этой службы. Сори, много букав получилось.
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 00:42
А какую роль играют секции в вашем ini?
0
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 20
01.02.2019, 01:05  [ТС]
В первую очередь, чтобы цикл перебрал все службы пределах одной секции, я хочу несколько сделать. Например, первый цикл завершает все службы, а второй - ставит тип запуска на "отключено", и т. д.
Может, потом сделаю чистку определенных каталогов в системе, или что-то в этом роде. В таком случае достаточно было бы добавить одни цикл в батник и одну секцию в файл настроек.
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 01:15
Я вот и спрашиваю насчёт нескольких. С одной секцией — понятно. Для неё второй цикл не требуется.
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 01:23
Короче. На примере iniman:
Windows Batch file
1
for /f "skip=1" %%s in ('iniman data.ini FIRST_BLOCK') do sc stop %%s &sc config %%s start= disabled
Вложения
Тип файла: 7z iniman.7z (5.8 Кб, 60 просмотров)
1
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 20
01.02.2019, 01:44  [ТС]
Спасибо огромное, прям то, что нужно.
Извиняюсь, что сразу не заметил.
Цитата Сообщение от FlasherX Посмотреть сообщение
Я вот и спрашиваю насчёт нескольких. С одной секцией — понятно. Для неё второй цикл не требуется.
Количество циклов и секций одинаково.

И как у вас получилось так компактно упаковать в .exe-шник, если не секрет? Можно ли так сделать с помощью mingw?
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 02:10
Пожалуйста.

У меня ничего не получалось. Это утилита из этого пакета.
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.02.2019, 03:20
Цитата Сообщение от Андрей Даев Посмотреть сообщение
Можно ли так сделать с помощью mingw
Можно. Берешь редактор кода, пишешь код (на Си\С++\любом компилируемом ЯП), компилируешь. Вау, ехешник готов.

P.S. Кстати, извраты с батниками для чтения ini файлов закончились в том самом году, как для любых задач автоматизации на windows придумали AutoIT. То есть в начале этого тысячелетия.
А лет 10 назад батники в windows заменили на Powershell.
Но пользователи windows такие пользователи...
В общем до сих пор пытаются есть лопатой и убирать снег ложкой.
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 12:38
P.S. Я, наверно, кого удивлю, но iniman тоже придумали в начале не то что тысячелетия (мы до сих пор в этом начале [1,9%] пребываем, кстати), а первого его десятилетия, поэтому вместо извратов команду с ней можно использовать как куда более локаничный из официальных на Windows во всех смыслах вариант, чем какой-либо ещё (не только из перечисленных).
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
01.02.2019, 13:15
Garry Galler, Причем на powershell, реализация по времени занимает от силы минут 10.
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function Get-IniContent ($filePath)
{
    $file=cat $filePath 
    $ini = @{}
    switch -regex ($file)
    {
        "^\[(.+)\]" # Section
        {
            $section = $matches[1]
            $ini[$section] = [ordered]@{}
            $CommentCount = 0
        }
       
        "^(?!;)(.+?)\s*=\s*(.*)(?=\s*;?.*)" # Key 
        {
            $name,$value = $matches[1..2]
            $ini[$section][$name] = $value
        }
    }
    return $ini
}
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 13:46
Цитата Сообщение от v_svitere Посмотреть сообщение
от силы
Что в переводе на язык логики — "целых".
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
01.02.2019, 13:54
FlasherX,
Что в переводе на язык логики — "целых"
Я просто не люблю себя торопить)
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,742
01.02.2019, 14:21
v_svitere, да я не про вашу личную скорость, а про сравнение с тем, что я предложил.

А вообще удивляет, что на .NET по умолчанию (ладно ещё на заброшенном wsh без доп. компонентов) нет своей ini-читалки. Мол, потому-то потому, пересели все быстренько на XML. Правка INI на тысячах популярных программ? Ну, и что? Нет, не хотим и не будем...
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
01.02.2019, 14:30
Цитата Сообщение от FlasherX Посмотреть сообщение
А вообще удивляет, что на .NET по умолчанию (ладно ещё на заброшенном wsh без доп. компонентов) нет своей ini-читалки.
Есть готовые модули, например:

PowerShell
1
Install-Module -Name PsIni -RequiredVersion 2.0.3
Или простые/наглядные примеры....
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
01.02.2019, 14:32
KDE777,
Или простые/наглядные примеры....
Я как раз и привел подобный пример выше.
0
01.02.2019, 14:37

Не по теме:

Цитата Сообщение от FlasherX Посмотреть сообщение
Правка INI на тысячах популярных программ?
Тысячах...? В моей практике, за последние ~15 лет, не могу вспомнить ни одной задачи связанной с ini-файлами...

Цитата Сообщение от v_svitere Посмотреть сообщение
Я как раз и привел подобный пример выше.
Это я к тому, что если сложно реализовать самому, то есть готовые примеры.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.02.2019, 14:37
Помогаю со студенческими работами здесь

Чтение настроек из файла, структура которого схожа с *.ini
Пример: Language=1 ConnTimeOut=10 Section=0 SelectIndex=0 Left=193 Top=139 Width=638 Height=490

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

Загрузка настроек из ini файла, что-то странное...
Всем привет! Написал я тут одну прогу. Она сохраняет свои настройки в Settings.ini а при запуске загружает их. Если просто запустить...

Загрузка настроек из INI файла для CheckBox
Сохранение и загрузка настроек из INI файла. Настройки все удачно сохраняются, а вот загружаться для CheckBox'ов никак не хотят В чем...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru