Автор Тема: Удаление секции в *.ini файле  (Прочитано 215 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн seriousstas [?]

  • Новичок
  • *
  • Сообщений: 30
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Версия AutoIt: 3.3.12.0
Описание:
Подскажите Резулярное выражение для :

Примечания:
строка x
строка x
и тд
/--------------------Start FOOBAR Control-----------------------
Строка x
Строка x
и тд
/--------------------End FOOBAR Control-----------------------
Строка x
Строка x
и тд
x - переменная . Те - строки меняют содержимое или могут отсутствовать.
Нужно оставить все, что выше и ниже ...FOOBAR Control , остальное (эти строки и содержимое секци) - удалить
файл называется UserExecTBL.ini
С чтением  - записью - разобрался .
На рерулярном - затык.
« Последнее редактирование: Май 03, 2018, 22:58:50 от seriousstas »

Русское сообщество AutoIt

Удаление секции в *.ini файле
« Отправлен: Май 02, 2018, 12:07:02 »

Оффлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 869
  • Репутация: 354
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: Удаление секции в *.ini файле
« Ответ #1, Отправлен: Май 02, 2018, 12:17:43 »

Оффлайн seriousstas [?]

  • Новичок
  • *
  • Сообщений: 30

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Удаление секции в *.ini файле
« Ответ #2, Отправлен: Май 02, 2018, 12:23:47 »
Код: AutoIt [Выделить]
Цитировать
Примечания

Стандартный ini-файл имеет следующую структуру:
[Имя секции]
Параметр=Значение
Спасибо, но обратите внимание  - это не стандартный ini файл (Файл содержит меняющийся текст, а секция начинается и заканчивается так, как показано выше ) .

Онлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 97
  • Репутация: 39
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Удаление секции в *.ini файле
« Ответ #3, Отправлен: Май 02, 2018, 13:12:01 »
Как-то так
Код: AutoIt [Выделить]
$sStr = FileRead('UserExecTBL.ini')

$sStr = StringRegExpReplace($sStr, '(?s)(/[-]+Start FOOBAR Control[-]+ .+?/[-]+End FOOBAR Control[-]+)', '')
FileOpen('UserExecTBL.ini', 2)
FileWrite('UserExecTBL.ini', $sStr)

« Последнее редактирование: Май 02, 2018, 13:21:39 от gunter123 »
Is it future or is it past?

Русское сообщество AutoIt

Re: Удаление секции в *.ini файле
« Ответ #3 Отправлен: Май 02, 2018, 13:12:01 »

Оффлайн seriousstas [?]

  • Новичок
  • *
  • Сообщений: 30

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Удаление секции в *.ini файле
« Ответ #4, Отправлен: Май 03, 2018, 01:04:47 »
Как-то так
Код: AutoIt [Выделить]
$sStr = FileRead('UserExecTBL.ini')

$sStr = StringRegExpReplace($sStr, '(?s)(/[-]+Start FOOBAR Control[-]+ .+?/[-]+End FOOBAR Control[-]+)', '')
FileOpen('UserExecTBL.ini', 2)
FileWrite('UserExecTBL.ini', $sStr)

Живой пример
/-------------------------------------------------------------------------------------
/----------------------------  Запись скриптов управления мышкой ---------------------
/-------------------------------------------------------------------------------------

"ShowStartFlash","Load;StartFlash.skin||StartTimer;_StartFlash_;$StartFlashTime$"
"on_StartFlash_timer","EndTimer;_StartFlash_||if;strcomp($SaveStateStatus$;0);{StartTimer;AutoLoadstart;$AutoLoadstartTime$};{BYVAR;MyApp1_AutoSaveState;{OnAutoSave1Timer}<<{MyApp1||StartTimer;AutoSave1;$AvtoLoadScreenTime$}}"
/-------------------------------------------------------------
/--------------------Start FOOBAR Control-----------------------
/-------------------------------------------------------------
//Управление плей листом.
"foobar_removeplaylist","RUNW;$foobar_exe$|/command:"remove playlist""
"foobar_renameplaylist","RUNW;$foobar_exe$|/command:"rename playlist""
"foobar_newplaylist","RUNW;$foobar_exe$|/"command:new playlist""
"foobar_loadplaylist","RUNW;$foobar_exe$|/command:"load playlist...""
"foobar_playnextplaylist","RUNW;$foobar_exe$|/command:"play next playlist""
"foobar_previousplaylist","RUNW;$foobar_exe$|/command:"previous playlist""
"foobar_saveplaylist","RUNW;$foobar_exe$|/command:"save playlist...""
"foobar_clearplaylist","RUNW;$foobar_exe$|/command:clear"

/-------------------------------------------------------------
/--------------------End FOOBAR Control-----------------------
/-------------------------------------------------------------
/ ------------------ OBD плагин ------------------------------
Должно примерно остаться (БЛОКИ FOOBAR Control МОГУТ ДУБЛИРОВАТЬСЯ - В ИДЕАЛЕ - СНЕСТИ ВСЕ)
/-------------------------------------------------------------------------------------
/----------------------------  Запись скриптов управления мышкой ---------------------
/-------------------------------------------------------------------------------------

"ShowStartFlash","Load;StartFlash.skin||StartTimer;_StartFlash_;$StartFlashTime$"
"on_StartFlash_timer","EndTimer;_StartFlash_||if;strcomp($SaveStateStatus$;0);{StartTimer;AutoLoadstart;$AutoLoadstartTime$};{BYVAR;MyApp1_AutoSaveState;{OnAutoSave1Timer}<<{MyApp1||StartTimer;AutoSave1;$AvtoLoadScreenTime$}}"
/-------------------------------------------------------------

/-------------------------------------------------------------
/ ------------------ OBD плагин ------------------------------
Пробую Ваш пример не работает, такой -  все обнуляет :
Код: AutoIt [Выделить]
$hFile = FileOpen(@ScriptDir & '\UserExecTBL.ini',2)
$sChars = FileRead($hFile)
$sStr = StringRegExpReplace($sChars, '(?s)(/[-]+Start FOOBAR Control[-]+ .+?/[-]+End FOOBAR Control[-]+)', '')
FileWrite($sChars, $sStr)


Онлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 97
  • Репутация: 39
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Удаление секции в *.ini файле
« Ответ #5, Отправлен: Май 03, 2018, 09:33:27 »
Эта строка открывает файл, удалив его содержимое, поэтому лучше вставить ее прямо перед записью нового содержимого, как в моем примере
Код: AutoIt [Выделить]
$hFile = FileOpen(@ScriptDir & '\UserExecTBL.ini',2)

Вот этот шаблон также удалит также строки /----- выше и ниже секции
Код: AutoIt [Выделить]
$sStr = StringRegExpReplace($sStr, '(?s)(/[^/]+/[- ]+Start FOOBAR Control[- ]+.*?/[- ]+End FOOBAR Control[- ]+[^/]*/[-]+)', '')

« Последнее редактирование: Май 03, 2018, 09:44:53 от gunter123 »

Оффлайн seriousstas [?]

  • Новичок
  • *
  • Сообщений: 30

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Удаление секции в *.ini файле
« Ответ #6, Отправлен: Май 03, 2018, 22:44:06 »
Эта строка открывает файл, удалив его содержимое, поэтому лучше вставить ее прямо перед записью нового содержимого, как в моем примере
Код: AutoIt [Выделить]
$hFile = FileOpen(@ScriptDir & '\UserExecTBL.ini',2)

Вот этот шаблон также удалит также строки /----- выше и ниже секции
Код: AutoIt [Выделить]
$sStr = StringRegExpReplace($sStr, '(?s)(/[^/]+/[- ]+Start FOOBAR Control[- ]+.*?/[- ]+End FOOBAR Control[- ]+[^/]*/[-]+)', '')


Релиз))  :beer: :
Код: AutoIt [Выделить]
$file = @ScriptDir & '\UserExecTBL.ini'
$sChars = FileRead($file)
$sStr = StringRegExpReplace($sChars, '(?s)(/[^/]+/[- ]+Start FOOBAR Control[- ]+.*?/[- ]+End FOOBAR Control[- ]+[^/]*/[-]+)', '')
$hFile = FileOpen($file,2)
FileWrite($hFile, $sStr)
 

Спасибо Большое!

Русское сообщество AutoIt

Re: Удаление секции в *.ini файле
« Ответ #6 Отправлен: Май 03, 2018, 22:44:06 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
5756 Просмотров
Последний ответ Октябрь 29, 2010, 09:38:50
от Atall
1 Ответов
2728 Просмотров
Последний ответ Декабрь 30, 2010, 17:54:38
от Guezt Gutsy
4 Ответов
2815 Просмотров
Последний ответ Март 03, 2012, 02:16:24
от CreatoR
0 Ответов
2864 Просмотров
Последний ответ Апрель 03, 2012, 10:12:34
от Viktor1703
2 Ответов
1990 Просмотров
Последний ответ Сентябрь 04, 2012, 18:45:24
от uman
23 Ответов
6431 Просмотров
Последний ответ Октябрь 15, 2012, 11:13:13
от evgen_vasgen
2 Ответов
2593 Просмотров
Последний ответ Ноябрь 01, 2012, 12:59:27
от madmasles
2 Ответов
906 Просмотров
Последний ответ Ноябрь 27, 2014, 13:13:26
от Ksaan
7 Ответов
1617 Просмотров
Последний ответ Декабрь 06, 2014, 13:55:25
от Ksaan
1 Ответов
754 Просмотров
Последний ответ Октябрь 26, 2015, 17:11:43
от Yashied