Что нового

Построчное считывание с тектового документа

ta2we4ka

Новичок
Сообщения
7
Репутация
0
Добрый всем день. Начала потихоньку изучать AutoIt и столкнулся с первыми проблемами.
Подскажите пожалуйста решение.

Имеется скрипт:

If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
HotKeySet("{ESC}", "Terminate")
Func Terminate()
Exit 0
EndFunc
$i = 0
do
$i = $i + 1
WinWait("название окна","")
If Not WinActive("название окна","") Then WinActivate("название окна","")
WinWaitActive("название окна","")
Send("!{TAB}текст")
Sleep(20)
Send("{ENTER}")
Sleep(20)
Send("{ENTER}{ENTER}")
Sleep(50)
until $i = 999

Собственно ! - должно браться из тектового файла по строчно. Т.е считало 1-ю строку вставило в тело скрипта вместо ! выполнило оперцию. После этого считало 2-ю строку опять вставило в тело скрипта выполнило операцию ... и так далее до окончания списка в текстовом файле. Фактически элементарный брут.

Заранее спасибо.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Попробуй вот так:
Код:
#include <file.au3>

$sFilePath = @ScriptDir & "\my.txt"
$sLines = _FileCountLines($sFilePath)
For $i = 1 To $sLines
	$command = FileReadLine($sFilePath, $i)
	MsgBox(0, "", $command & $i)
Next
 
Автор
T

ta2we4ka

Новичок
Сообщения
7
Репутация
0
Спасибо за оперативный ответ ... но как то смутно представляю как его использовать.
Если не затруднит то конечный вариант изменённого скрипта напишите. :smile:
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Код:
#include <file.au3>

If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
HotKeySet("{ESC}", "Terminate")

$sFilePath = @ScriptDir & "\my.txt" ;файл в папке со скриптом
$sLines = _FileCountLines($sFilePath) ; возвращает количество строк в файле

WinWait("название окна","")
If Not WinActive("название окна","") Then WinActivate("название окна","")
WinWaitActive("название окна","")

For $i = 1 To $sLines ; от 1 до количества строк в файле выполнять:
    $command = FileReadLine($sFilePath, $i)
    Send($command&"{TAB}")
    Sleep(20)
    Send("{ENTER}")
    Sleep(20)
    Send("{ENTER 2}") ; послыает два раза Enter
    Sleep(50)
Next

Func Terminate()
Exit 0
EndFunc
 
Автор
T

ta2we4ka

Новичок
Сообщения
7
Репутация
0
Так ... хочу ещё 1 вопрос задать ... так как считывание происходит без открытия txt файла, есть ли возможность записи так же без открытия блокнота?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Код:
FileWrite("my.txt", "Из русской справки по этой функции:" & @CRLF & _
"Если вместо указателя на файл задано его название, то файл будет открываться и закрываться при каждом вызове функции.")
 
Автор
T

ta2we4ka

Новичок
Сообщения
7
Репутация
0
Замечания

Файл должен быть открыт в режиме для чтения.


А мне бы без открытия файла.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
ta2we4ka [?]
Файл должен быть открыт в режиме для чтения.
если в файл надо что-либо записать, его надо открывать в режиме для записи, а не для чтения.
ta2we4ka [?]
А мне бы без открытия файла.
открытие файла для чтения и записи не есть открытие блокнота для проделывания тех же самых операций. все будет происходить средствами самого AutoIt.
 
Верх