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

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

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

Аватара для Pozia

Ветеран


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

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


Есть текстовый файл 1.txt. Мне нужно найти в нем определенной слово и заменить его на имя компьютера с которого производится запуск скрипта, и после этого создать текстовый файл 2.txt такой же по содержанию но с измененным словом. Как это сделать?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 18:55, 13-01-2010

 

Аватара для madmasles

Ветеран


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

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


Pozia,
Попробуйте так
Код: Выделить весь код
$hUser = FileOpen(@ScriptDir & "\" & @UserName & ".txt",2) ;создать новый файл с именем текущего пользователя.
FileWrite($hUser, "Текущий пользователь - " & @UserName) ;записать в него текущего пользователя.
FileClose($hUser) ;закрыть его.
; ..........
FileMove(@ScriptDir & "\1.txt", @ScriptDir & "\" & @UserName & ".txt") ;переименовать существующий файл.

Последний раз редактировалось madmasles, 06-03-2010 в 10:54.

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:07, 06-03-2010 | #11



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

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


Аватара для Pozia

Ветеран


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

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


madmasles, я наверное Вас уже утомил Нужна опять помощь. Есть файл реестра. В нем я меняю слово PoziaMark на имя запущенной учетной записи. Скрипт такой:

Код: Выделить весь код
; Определение Имени учетной записи
$sPathOld = ".\Setting\Set.reg"
$sPathNew = "SetNew.reg"
$slovo = "PoziaMark";
$sTest = FileRead($sPathOld)
$sTest = StringReplace($sTest, $slovo, @UserName)
FileWrite($sPathNew, $sTest)
Мне нужно его дописать чтобы скрипт еще определял какая разрядность системы (32 или 64) и менял Program Files Mark на Program Files в случае 32 разрядной системы или на Program Files (x86) при 64. Такое возможно?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 19:10, 09-03-2010 | #12


Аватара для madmasles

Ветеран


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

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


Pozia,
Ничего страшного. Попробуйте так
Код: Выделить весь код
$sPathOld = @ScriptDir & "\1.txt"
$sPathNew = @ScriptDir & "\2.txt"
$slovoOld = "Program Files Mark"
$slovoNew32 = "Program Files"
$slovoNew64 = "Program Files (x86)"
$sTest = FileRead($sPathOld)
$ras = @OSArch ;макрос разрядности
If $ras = "X86" Then
    $sTest = StringReplace($sTest, $slovoOld, $slovoNew32)
Else
    $sTest = StringReplace($sTest, $slovoOld, $slovoNew64)
EndIf
FileWrite($sPathNew, $sTest)
Не могу проверить на 64 системе. В справке говорится, что макрос @OSArch возвращает "x86" или "ia64" или "x64". Не знаю что такое "ia64".
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:49, 09-03-2010 | #13


Аватара для Pozia

Ветеран


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

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


Цитата madmasles:
Не могу проверить на 64 системе »
завтра на работе проверю. спасибо.

madmasles, аподскажите еще как объеденить приведенный Вами скрипт и мой из поста 12 в один на подобие как вы сделали в посте 9. Сам никак не соображу. Сложновато.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 20:49, 09-03-2010 | #14


Аватара для madmasles

Ветеран


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

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


Pozia,
Примерно так:
Код: Выделить весь код
$sPathOld = ".\Setting\Set.reg"
$sPathNew = "SetNew.reg"
$slovo = "PoziaMark"
$slovoOld = "Program Files Mark"
$slovoNew32 = "Program Files"
$slovoNew64 = "Program Files (x86)"
$sTest = FileRead($sPathOld)
$sTest = StringReplace($sTest, $slovo, @UserName)
$ras = @OSArch
If $ras = "X86" Then
    $sTest = StringReplace($sTest, $slovoOld, $slovoNew32)
Else
    $sTest = StringReplace($sTest, $slovoOld, $slovoNew64)
EndIf
FileWrite($sPathNew, $sTest)
Только меня смущает это:
Цитата:
$sPathOld = ".\Setting\Set.reg"
Вы проверяли, так работает?
PS
Сам проверил - у меня так работает.

Последний раз редактировалось madmasles, 09-03-2010 в 22:45.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:20, 09-03-2010 | #15


Аватара для Pozia

Ветеран


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

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


Цитата madmasles:
Не могу проверить на 64 системе. »
все нормально работает. спасибо еще раз.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление строк в текстовом файле, как это сделать??? VladZombie Скриптовые языки администрирования Windows 70 08-09-2020 13:28
CMD/BAT - [решено] Передача исполняемому файлу параметров, перечисленных в текстовом файле Vadikan Скриптовые языки администрирования Windows 6 19-04-2017 02:30
CMD/BAT - [решено] Отделить последние цифры из строчки в текстовом файле ZeroCrash Скриптовые языки администрирования Windows 4 29-06-2009 16:03
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? Pozia AutoIt 23 14-05-2009 21:41
[решено] Как заменить строку [27] в файле? semiono AutoIt 8 05-04-2009 02:56




 
Переход