Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск и замена текста в файле

Ответить
Настройки темы
[решено] Поиск и замена текста в файле

Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


Изменения
Автор: TERMINAL
Дата: 16-03-2011
Вложения
Тип файла: rar RDP.rar
(570 байт, 10 просмотров)
Приветствую Вас !
Прочитал несколько похожих тем, но решения так и не нашёл (или не понял).
Есть файл по пути (C:\Documents and Settings\Пользователь\Мои документы\Default.rdp), тоесть настройки RDP. Мне нужно найти в нём, к примеру строку desktopwidth:i:1280 и земенить её на desktopwidth:i:1024. Игрался с командами StringRegExp и StringReplace, что-то ничего не выходит-непойму как сохранить найденный и изменённый desktopwidth:i:1024. Заранее спс.

читать дальше »
Примерчик:
$sFile = FileRead("C:\Documents and Settings\Пользователь\Мои документы\Default.rdp")
$text=StringReplace($sFile, "desktopwidth:i:1280" & @CRLF, "desktopwidth:i:1024" & @CRLF)
MsgBox(0, "test", $text)

-------
Автоматизация прежде всего....


Отправлено: 11:36, 16-03-2011

 

Аватара для yurfed

Ветеран


Сообщения: 20111
Благодарности: 3137

Профиль | Отправить PM | Цитировать


Цитата TERMINAL:
Примерчик:
$sFile = FileRead("C:\Documents and Settings\Пользователь\Мои документы\Default.rdp") »
Попробуйте для начала более простой путь. Например: C:\123\Default.rdp

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 12:07, 16-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


TERMINAL,
Вы бы пример Вашего файла Default.rdp привели.

Отправлено: 12:19, 16-03-2011 | #3


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


yurfed, Тоже не срабатывает, остаются старые параметры, у меня такое впечатление что отсутствует команда записи...

madmasles, прикрепил к шапке...

-------
Автоматизация прежде всего....


Отправлено: 12:28, 16-03-2011 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


TERMINAL, если Вы можете гарантировать наличие именно этой строки в файле, то достаточно простого:
Код: Выделить весь код
#Include <File.au3>

If (_ReplaceStringInFile("E:\Песочница\0041\Default.rdp", "desktopwidth:i:1280", "desktopwidth:i:1024") = 0) Then
	ConsoleWriteError("Can't find [desktopwidth:i:1280] in [Default.rdp]" & @CRLF)
EndIf
Если строка может отсутствовать, или вместо «desktopwidth:i:1280» может быть, например, «desktopwidth:i:600», а добавление или замена всё равно требуются, то код надо будет делать иным.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:30, 16-03-2011 | #5


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить 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


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск и замена текста в файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход