|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск и замена текста в файле |
|
|
[решено] Поиск и замена текста в файле
|
|
Ветеран Сообщения: 753 |
Приветствую Вас !
Прочитал несколько похожих тем, но решения так и не нашёл (или не понял). Есть файл по пути (C:\Documents and Settings\Пользователь\Мои документы\Default.rdp), тоесть настройки RDP. Мне нужно найти в нём, к примеру строку desktopwidth:i:1280 и земенить её на desktopwidth:i:1024. Игрался с командами StringRegExp и StringReplace, что-то ничего не выходит-непойму как сохранить найденный и изменённый desktopwidth:i:1024. Заранее спс. |
|
|
------- Отправлено: 11:36, 16-03-2011 |
|
Ветеран Сообщения: 20133
|
Профиль | Отправить PM | Цитировать Цитата TERMINAL:
|
|
|
------- Отправлено: 12:07, 16-03-2011 | #2 |
|
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать TERMINAL,
Вы бы пример Вашего файла Default.rdp привели. |
|
Отправлено: 12:19, 16-03-2011 | #3 |
|
Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать yurfed, Тоже не срабатывает, остаются старые параметры, у меня такое впечатление что отсутствует команда записи...
madmasles, прикрепил к шапке... |
|
------- Отправлено: 12:28, 16-03-2011 | #4 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать TERMINAL, если Вы можете гарантировать наличие именно этой строки в файле, то достаточно простого:
Если строка может отсутствовать, или вместо «desktopwidth:i:1280» может быть, например, «desktopwidth:i:600», а добавление или замена всё равно требуются, то код надо будет делать иным. |
|
|
Отправлено: 14:30, 16-03-2011 | #5 |
|
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать TERMINAL,
Попробуйте так: $sReplaseString = 'full address' $sNew = '127.0.0.0' $sFile = @ScriptDir & '\Default.rdp' $iEncoding = FileGetEncoding($sFile) $hFile = FileOpen($sFile, $iEncoding) $sText = FileRead($hFile) FileClose($hFile) $sSearch = StringRegExpReplace($sText, '(?s).*?' & $sReplaseString & '(?::i:|:s:)(.*?)\r\n?.*', '\1') ConsoleWrite($sSearch & @CR) $sText = StringReplace($sText, $sSearch, $sNew) $hFile = FileOpen($sFile, $iEncoding + 2) FileWrite($sFile, $sText) FileClose($hFile) |
|
Отправлено: 15:31, 16-03-2011 | #6 |
|
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать TERMINAL,
Или так: #include <GUIConstantsEx.au3>
$j = 0
$sFile = @ScriptDir & '\Default.rdp'
If Not FileExists($sFile) Then
MsgBox(16, 'Error', 'Error')
Exit
EndIf
$iEncoding = FileGetEncoding($sFile)
$hFile = FileOpen($sFile, $iEncoding)
$sText = FileRead($hFile)
FileClose($hFile)
$aTemp = StringSplit(StringStripCR($sText), @LF)
Dim $aText[$aTemp[0] + 1][4]
For $i = 1 To $aTemp[0]
If $aTemp[$i] Then
$j += 1
$aText[$i][1] = StringRegExpReplace($aTemp[$i], '^(.*?):.*', '\1')
$aText[$i][2] = StringRegExpReplace($aTemp[$i], $aText[$i][1] & '(:.*?:).*', '\1')
$aText[$i][3] = StringRegExpReplace($aTemp[$i], $aText[$i][1] & $aText[$i][2] & '(.*?)\z', '\1')
EndIf
Next
ReDim $aText[$j + 1][4]
$aText[0][0] = $j
$aTemp = 0
$sText = ''
$j = 0
$hGui = GUICreate('Редактор Default.rdp', 260, 30 + $aText[0][0] * 15)
For $i = 1 To $aText[0][0]
GUICtrlCreateLabel($aText[$i][1], 10, 5 + ($i - 1) * 15, 130, 14)
GUICtrlSetFont(-1, 7)
$aText[$i][0] = GUICtrlCreateInput($aText[$i][3], 150, 5 + ($i - 1) * 15, 100, 14)
GUICtrlSetFont(-1, 7)
Next
$nButton = GUICtrlCreateButton('Сохранить', 80, 7 + $aText[0][0] * 15, 100, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nButton
$sText = ''
For $i = 1 To $aText[0][0]
$sText &= $aText[$i][1] & $aText[$i][2] & GUICtrlRead($aText[$i][0]) & @CRLF
Next
$hFile = FileOpen($sFile, $iEncoding + 2)
FileWrite($hFile, $sText)
FileClose($hFile)
EndSwitch
WEnd
|
|
Отправлено: 17:49, 16-03-2011 | #7 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - [решено] Поиск и замена текста | ajakzs | Скриптовые языки администрирования Windows | 18 | 08-08-2013 16:10 | |
| CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файлов на разных дисках | 4zz | Скриптовые языки администрирования Windows | 2 | 21-02-2011 16:07 | |
| C/C++ - [решено] Поиск и замена текста | Simpler | Программирование и базы данных | 15 | 01-12-2010 16:03 | |
| C/C++ - Поиск текста в файлах | student_po | Программирование и базы данных | 6 | 04-09-2009 23:33 | |
| Офис и Текст - Замена текста | Котяра | Программное обеспечение Windows | 1 | 29-09-2008 13:51 | |
|