Что нового

Удаление секции в *.ini файле

seriousstas

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

Примечания:
Код:
строка x
строка x
и тд
/--------------------Start FOOBAR Control----------------------- 
Строка x
Строка x
и тд
/--------------------End FOOBAR Control----------------------- 
Строка x
Строка x
и тд
x - переменная . Те - строки меняют содержимое или могут отсутствовать.
Нужно оставить все, что выше и ниже ...FOOBAR Control , остальное (эти строки и содержимое секци) - удалить
файл называется UserExecTBL.ini
С чтением - записью - разобрался .
На рерулярном - затык.
 
Автор
S

seriousstas

Новичок
Сообщения
32
Репутация
0
sngr сказал(а):
Примечания

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

gunter123

Продвинутый
Сообщения
159
Репутация
69
Как-то так
Код:
$sStr = FileRead('UserExecTBL.ini')

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

seriousstas

Новичок
Сообщения
32
Репутация
0
gunter123 сказал(а):
Как-то так
Код:
$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 плагин ------------------------------
Пробую Ваш пример не работает, такой - все обнуляет :
Код:
$hFile = FileOpen(@ScriptDir & '\UserExecTBL.ini',2)
$sChars = FileRead($hFile)
$sStr = StringRegExpReplace($sChars, '(?s)(/[-]+Start FOOBAR Control[-]+ .+?/[-]+End FOOBAR Control[-]+)', '')
FileWrite($sChars, $sStr)
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
Эта строка открывает файл, удалив его содержимое, поэтому лучше вставить ее прямо перед записью нового содержимого, как в моем примере
Код:
$hFile = FileOpen(@ScriptDir & '\UserExecTBL.ini',2)

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

seriousstas

Новичок
Сообщения
32
Репутация
0
gunter123 сказал(а):
Эта строка открывает файл, удалив его содержимое, поэтому лучше вставить ее прямо перед записью нового содержимого, как в моем примере
Код:
$hFile = FileOpen(@ScriptDir & '\UserExecTBL.ini',2)

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

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

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