|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Скрипт для удаления нужных слов в ini файле |
|
[решено] Скрипт для удаления нужных слов в ini файле
|
Ветеран Сообщения: 2756 |
Профиль | Отправить PM | Цитировать Подскажите скрипт который удалит нужные мне заведомо известные слова из ini файла и больше ничего в нем не тронет.
|
|
Отправлено: 07:45, 08-04-2009 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать proxy, amel27, в общем такой вот имею ini файл:
[General] Manufacturer=Windows XP Pozia Edition 2009 Model=NVIDIA GeForce 9800 GT [OEMSpecific] SerialNo="xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" [Support Information] Line1=ОС: Windows XP SP 3 версия 5.1 сборка 2600.xpsp_sp3_qfe.080814-1300 Line2= Line3=-------------------------------------------------------------------------------- Line4=Дата и время установки: 07.04.2009 (23:11) Line5=-------------------------------------------------------------------------------- Line6=По любым вопросам и предложениям можно обратиться: Line7=Velcom: x-xxx-xxx-xx-xx Line8=MTC: x-xxx-xxx-xx-xx Line9=ICQ: xxx-xxx-xxx Line10=Mail: xxxxx@xxxxxx.xx Line11= xxxxxx xxxxxx xxxxxxxxxxx Line12=-------------------------------------------------------------------------------- Line13= Line14=Установленные компоненты и обновления (78): Line15= Line16=BASECSP DNet1135 Games IE8 IE968220 KB887606 Line17=KB922120 KB928788 KB929399 KB929773 KB932390 KB932716 Line18=KB933547 KB935551 KB935552 KB935957 KB939209 KB939683 Line19=KB941569 KB942288 KB943729 KB944043 KB946648 KB950762 Line20=KB950974 KB951066 KB951376 KB951618 KB951698 KB951748 Line21=KB951830 KB951978 KB952011 KB952069 KB952287 KB952954 Line22=KB953155 KB954067 KB954154 KB954459 KB954600 KB954708 Line23=KB954920 KB955069 KB955417 KB955704 KB955839 KB956802 Line24=KB956841 KB957097 KB958644 KB958655 KB958687 KB958690 Line25=KB958752 KB959772 KB960225 KB960680 KB960763 MSCOMPPA Line26=MSXML MassStor OEMINFO Patch_NT Patch_NT Patch_NT Line27=Patch_NT ROOTSUPD SetupPro SetupSet WInstyle WMFDIST1 Line28=WMP11 WMP11RU WPI WSTART WSidebar WUDF0100 [General] Manufacturer=Windows XP Pozia Edition 2009 Model=NVIDIA GeForce 9800 GT [OEMSpecific] SerialNo="xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" [Support Information] Line1=ОС: Windows XP SP 3 версия 5.1 сборка 2600.xpsp_sp3_qfe.080814-1300 Line2= Line3=-------------------------------------------------------------------------------- Line4=Дата и время установки: 07.04.2009 (23:11) Line5=-------------------------------------------------------------------------------- Line6=По любым вопросам и предложениям можно обратиться: Line7=Velcom: x-xxx-xxx-xx-xx Line8=MTC: x-xxx-xxx-xx-xx Line9=ICQ: xxx-xxx-xxx Line10=Mail: xxxxx@xxxxxx.xx Line11= xxxxxx xxxxxx xxxxxxxxxxx Line12=-------------------------------------------------------------------------------- Line13= Line14=Установленные компоненты и обновления (54): Line15= Line16=KB922120 KB928788 KB929399 KB929773 KB932390 KB932716 Line17=KB933547 KB935551 KB935552 KB935957 KB939209 KB939683 Line18=KB941569 KB942288 KB943729 KB944043 KB946648 KB950762 Line19=KB950974 KB951066 KB951376 KB951618 KB951698 KB951748 Line20=KB951830 KB951978 KB952011 KB952069 KB952287 KB952954 Line21=KB953155 KB954067 KB954154 KB954459 KB954600 KB954708 Line22=KB954920 KB955069 KB955417 KB955704 KB955839 KB956802 Line23=KB956841 KB957097 KB958644 KB958655 KB958687 KB958690 Line24=KB958752 KB959772 KB960225 KB960680 KB960763 KB887606 |
------- Отправлено: 18:37, 08-04-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать ;~ #NoTrayIcon #region: - Options Opt('GUIOnEventMode', 1) Opt('MustDeclareVars', 1) Opt('TrayIconDebug', 1) Opt('TrayIconHide', 0) #endregion Local $sFilePath = @ScriptDir & '\oeminfo.ini' Local $sResult = _EditOemInfo($sFilePath, 0) If @error Then MsgBox(16, 'Ошибка', $sResult & @CRLF & @CRLF & 'Колличество КВ:' & @TAB & @extended & @CRLF & 'Код результата:' & @TAB & @error) Else MsgBox(64, 'Результат', $sResult & @CRLF & @CRLF & 'Колличество КВ:' & @TAB & @extended & @CRLF & 'Код результата:' & @TAB & @error) EndIf Func _EditOemInfo($sFilePath, $iCountKbRow) Local $sFileText = FileRead($sFilePath) If @error Then Return SetError(1, 0, 'Ошибка чтения файла') Local $aKB = StringRegExp($sFileText, '(?s)(KB\d+)', 3) If @error Then Return SetError(2, 0, 'Ошибка поиска KB') Local $iLineNamber = StringRegExpReplace($sFileText, '(?i)(?s).*Line(\d+)=Установленные компоненты и обновления.*', '\1') + 1 If @error Then Return SetError(3, 0, 'Ошибка определения номера Line') Local $sKB = 'Line' & $iLineNamber & '=' & @CRLF Local $n, $i If $iCountKbRow < 1 Then $iCountKbRow = 4 For $i=0 To UBound($aKB) $iLineNamber += 1 $sKB &= 'Line' & $iLineNamber & '=' For $n=0 To $iCountKbRow-1 If $i+$n >= UBound($aKB) Then ExitLoop 2 $sKB &= $aKB[$i+$n] If $n < $iCountKbRow-1 Then $sKB &= ' ' Else $sKB &= @CRLF $i += $iCountKbRow-1 EndIf Next If $i >= UBound($aKB)-1 Then ExitLoop Next If StringRight($sKB, 1) == ' ' Then $sKB = StringTrimRight($sKB, 1) If StringRight($sKB, 2) == @CRLF Then $sKB = StringTrimRight($sKB, 2) $sFileText = StringRegExpReplace($sFileText, '(?i)(?s)(.*Установленные компоненты и обновления).*', '\1') & ' (' & UBound($aKB) & '):' & @CRLF & $sKB FileDelete($sFilePath) FileWrite($sFilePath, $sFileText) Return SetError(0, UBound($aKB), 'Операция выполненна успешно') EndFunc |
------- Последний раз редактировалось proxy, 08-04-2009 в 21:19. Отправлено: 20:48, 08-04-2009 | #12 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать proxy, спасибо! есть один глюк. скрипт глотает некоторые KB***
После выполнения пересчитал правильно - 54 но их получилось в ini файле 44. Посмотрите пожалуйста ошибку. И сделайте пожалуйста скрипт полностью тихим. Не нужно всяких окон о выполнении И в исходном файле 6 столбцов обнавлений. После обработки получается 4. Подправте тоже пожалуйста |
------- Отправлено: 21:30, 08-04-2009 | #13 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать 1. Перепроверьте скрипт, тогда его обновлял. У меня все работае отлично.
2. Стоит "читать" код - там все есть: _EditOemInfo($sFilePath, $iCountKbRow) $iCountKbRow - колличество KB столбцов, не сложно догадаться/перевести... Волшебная строка: _EditOemInfo($sFilePath, 0) - меняйте ноль на колличество желаемых столбцов. 3. Цитата:
|
|
------- Отправлено: 21:54, 08-04-2009 | #14 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать proxy, а как добавить пробелов между KB***?
Сильно не пинайте, я ноль в скриптах( |
------- Отправлено: 22:32, 08-04-2009 | #15 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 23:19, 08-04-2009 | #16 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать вариант через RegExp():
$sFile = "c:\Work.AU3\oem\OEMInfo.ini" $sText= FileRead($sFile) $aTag = StringRegExp($sText, "(?ism)^Line(\d+)=Установленные компоненты и обновления \(\d+\):", 3) $iTag = StringInStr ($sText, @CRLF&"Line"& $aTag[0] &"=")+1 $aKBs = StringRegExp($sText, "(?i)\b(KB\d+)\b", 3, $iTag) $sList = "Line"& $aTag[0] &"=Установленные компоненты и обновления ("& UBound($aKBs) &"):"&@CRLF&"Line"& $aTag[0]+1 &"="& @CRLF For $i=0 To UBound($aKBs)-1 Step 6 $sList &= StringFormat("Line%-i=%-10s%-10s%-10s%-10s%-10s%-10s\r\n",$aTag[0]+2+$i/6,$aKBs[$i],$aKBs[$i+1],$aKBs[$i+2],$aKBs[$i+3],$aKBs[$i+4],$aKBs[$i+5]) Next FileDelete($sFile) FileWrite($sFile,StringLeft($sText,$iTag) & $sList) |
Отправлено: 06:58, 09-04-2009 | #17 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, спасибо. Вечером проверю ваш вариант
|
------- Отправлено: 07:38, 09-04-2009 | #18 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать amel27, StringFormat (!!!!) блин....как все просто!! )))
Цитата:
|
|
------- Отправлено: 08:00, 09-04-2009 | #19 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, ВЫ как всегда на высоте. Кратко, быстро и по делу. Вот только не могу сообразить что поменять чтобы стало колонок допустим 5 и интервал между ними 7 пробелов. Подскажите пожалуйста
|
------- Отправлено: 18:18, 09-04-2009 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки | avfiga | Скриптовые языки администрирования Windows | 71 | 07-01-2023 18:50 | |
CMD/BAT - [решено] Помогите найти скрипт для удаленного удаления програм | magwolf | Скриптовые языки администрирования Windows | 20 | 01-02-2016 23:35 | |
Система - Что у Вас в файле Finish.ini для GUI интегратора? | wolkow70 | Наборы обновлений для Windows XP/2003/Windows 7 | 13 | 15-01-2011 02:07 | |
Любой язык - нужен скрипт для удаления всех файлов кроме нужных для запуска Windows XP | Dark Ange1 | Скриптовые языки администрирования Windows | 11 | 07-03-2010 13:34 | |
Функция PHP для удаления не нужных символов | darksmoke | Вебмастеру | 3 | 01-04-2008 01:18 |
|