Что нового

[Данные, строки] Запись данных в текстовый файл после их ввода

marmisha

Новичок
Сообщения
41
Репутация
2
Подскажите, как произвести запись в файл check.txt логина и пароля из файлов $aLogins[$i] и $aPasswords[$i]?
Вот мои наброски,но не работает((
Код:
#requireadmin
$file = FileOpen("check.txt", 1)
FileWriteLine($file, $aLogins[$i] & , & $aPasswords[$i] & @CRLF)
FileClose($file)
 

Arei

Скриптер
Сообщения
938
Репутация
115
Re: [Данные, строки] Запись в файл

OffTopic:
как это ты читаешь из этого файл, а потом опять пытаешься записать?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Данные, строки] Запись в файл

Код:
Dim $aLogins[5] = ["JPM", "Holger", "Jon", "Larry", "Jeremy"]
Dim $aPasswords[5] = ["12321415", "eqw1241rrqw", "123eqr12141", "234e42wrwr23", "qwerwewerwer"]

$hFile = FileOpen("test.txt", 1)

If $hFile = -1 Then
    Exit
EndIf

For $i = 0 To UBound($aLogins) -1
	FileWriteLine($hFile, $aLogins[$i] & "=" & $aPasswords[$i] & @CRLF)
Next

FileClose($hFile)
 

sss

Продвинутый
Сообщения
332
Репутация
96
Re: [Данные, строки] Запись в файл

Немного не понял вопрос. Если $aLogins[$i] и $aPasswords[$i] - о массивы, а цель - записать все логины-пароли в паре, то так:
Код:
Dim $aLogins[5]=['login1','login2','login3','login4','login5'] ; для проверки, у тебя массив свой
Dim $aPasswords[5]=['pass1','pass2','pass3','pass4','pass5'] ; то же самое - только для проверки
For $i=0 to Ubound($aLogins) Step 1
	FileWriteLine('logins-pass.txt',$aLogins[$i] & ' - ' & $aPasswords[$i])
Next

Файл получается такой -
Код:
login1 - pass1
login2 - pass2
login3 - pass3
login4 - pass4
login5 - pass5

UPD: Garret - опередил ))
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Re: [Данные, строки] Запись в файл

Обстановка такая:
есть файл Login и файл Pass, из них берутся построчно логин-пароль и вводятся в поля, далее скрипт записывает в отдельный тхт файл эти введенные данные, на чем я и застопорился)))))
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Re: [Данные, строки] Запись в файл

marmisha
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"[Данные, строки] Запись в файл" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Администратор форума.









Sky-WaLkeR [?]
UPD: Garret - опередил ))
У тебя в профиле отключена опция «Не предупреждать о появившихся ответах во время написания собственного сообщения.», т.ч то что он тебя опередил, ты должен был заметить при попытке отправке сообщения ;).
Поэтому лучше просто написать “Вот ещё один вариант”, или “Вот мой вариант решения задачи”.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Данные, строки] Запись в файл

А что вам мешает, после того как вы ввели значения в поля, сразу записывайте их в файл (неважно в переменных значения или в массивах)!
Читайте справку:
Код:
FileWriteLine()
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
marmisha
Вроде бы и понятно, но не совсем. Уточнить надо.
есть файл Login и файл Pass
Т.е. два файла, например, - Login.txt и Pass.txt - ?
из них берутся построчно логин-пароль
Т.е. первая строка файла Login.txt - это логин точно соответствует
1-й строке файла Pass.txt (пароль) и так построчно и соответственно далее?
и вводятся в поля, далее скрипт записывает в отдельный тхт файл эти введенные данные
Скрипт уже именно записывает в отдельный тхт файл, или этот функционал надо помочь Вам реализовать?
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Yuriy сказал(а):
marmisha
Вроде бы и понятно, но не совсем. Уточнить надо.
есть файл Login и файл Pass
Т.е. два файла, например, - Login.txt и Pass.txt - ?
из них берутся построчно логин-пароль
Т.е. первая строка файла Login.txt - это логин точно соответствует
1-й строке файла Pass.txt (пароль) и так построчно и соответственно далее?
и вводятся в поля, далее скрипт записывает в отдельный тхт файл эти введенные данные
Скрипт уже именно записывает в отдельный тхт файл, или этот функционал надо помочь Вам реализовать?
Правильно поняли,но еще раз опишу все полностью:
-В папке находятся сам скрипт и тхт файлы: Login, Pass, Check.
-Скрипт вводит в поле, по заданным координатам логин (из Login.txt), пароль (из Pass.txt), причем
первая строка файла Login.txt - это логин точно соответствует 1-й строке файла Pass.txt (пароль) и так построчно и соответственно далее
взял вашу цитату))))
-Далее, нужно чтобы в файле Check.txt появилась запись введенного логина и пароля через двоеточие (например)( из первой строки всего списка соответственно)
Завтра буду на работе, выложу весь скрипт полностью, может что подскажите по его улучшению))))
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Почти ясно.
Или надо просто из двух файлов Login.txt и Pass.txt
создать один - Check.txt (это проще)

Или же Check.txt должен наполняться данными из
Login.txt и Pass.txt только в определенный момент в процессе
работы того скрипта (после ввода данных в поля, например).
(тут надо смотреть)
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Вот мой скрипт полностью, ошибка вылетает в строке
FileWriteLine($hFile, $aLogins[$i] &"="&$aPasswords[$i])
Записываются в файл check.txt сразу все логины-пароли, а нужно по одному.
Код:
#requireadmin
#include <File.au3>
#include <Array.au3>
HotKeySet("{ESC}", "Terminate")
Global $Paused
HotKeySet("{z}", "TogglePause")
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',1143,20)
    WEnd
    ToolTip("")
EndFunc
Func Terminate()
	Exit 0
EndFunc;==>Terminate
Dim $aLogins, $aPasswords ;объявляем массивы
;читаем файл в массив
_FileReadToArray('D:\разное\l2titan Auto Login\login.txt', $aLogins) ; тут прописываем ПОЛНЫЙ путь к файлу с логинами
_FileReadToArray('D:\разное\l2titan Auto Login\pass.txt', $aPasswords); тут прописываем ПОЛНЫЙ путь к файлу с паролями
For $i = 1 To 125000 Step 1
	WinWait("Lineage II", "")
	If Not WinActive("Lineage II", "") Then WinActivate("Lineage II", "")
	WinWaitActive("Lineage II", "")
	Sleep(100)
	MouseClick("left", 600, 301, 1, 0)
	Sleep(100)
	MouseClick("left", 600, 301, 2, 0)
	MouseClick("left")
	Sleep(500)
	MouseClick("left")
	Send("{BS 20}")
	Sleep(500)
	Send($aLogins[$i]);Логин 1
	MouseClick("left", 598, 321, 2, 0)
	Sleep(600)
MouseClick("left")
	Send("{BS 20}")
	Send($aPasswords[$i]);Пароль 1
	Send("{ENTER}")
	Sleep(4000)
	Send("{ENTER}"); подтверждение соглашения
	Sleep(1000)
	Send("{ENTER}")
	ToolTip($aLogins[$i] & "," & $aPasswords[$i], 1143, 0)
	Sleep(1000)

$hFile = FileOpen("check.txt", 1)
If $hFile = -1 Then
    Exit
EndIf
For $i = 1 To 125000 Step 1
FileWriteLine($hFile, $aLogins[$i] &"="& $aPasswords[$i])
Next
FileClose($hFile)

	MouseMove(940, 530, 0)
	Sleep(6000)
	MouseClick("left")
Next
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Вот так будет логичнее:
Код:
#include <File.au3>
#include <Array.au3>

Dim $aLogins, $aPasswords ;объявляем массивы
;читаем файл в массив
_FileReadToArray('D:\разное\l2titan Auto Login\login.txt', $aLogins) ; тут прописываем ПОЛНЫЙ путь к файлу с логинами
_FileReadToArray('D:\разное\l2titan Auto Login\pass.txt', $aPasswords); тут прописываем ПОЛНЫЙ путь к файлу с паролями
$hFile = FileOpen("check.txt", 1)
If $hFile = -1 Then
	Exit
EndIf
For $i = 1 To $aLogins[0]
	WinWait("Lineage II", "")
	If Not WinActive("Lineage II", "") Then WinActivate("Lineage II", "")
	WinWaitActive("Lineage II", "")
	Sleep(100)
	MouseClick("left", 600, 301, 1, 0)
	Sleep(100)
	MouseClick("left", 600, 301, 2, 0)
	MouseClick("left")
	Sleep(500)
	MouseClick("left")
	Send("{BS 20}")
	Sleep(500)
	Send($aLogins[$i]);Логин 1
	MouseClick("left", 598, 321, 2, 0)
	Sleep(600)
	MouseClick("left")
	Send("{BS 20}")
	Send($aPasswords[$i]);Пароль 1
	Send("{ENTER}")
	Sleep(4000)
	Send("{ENTER}"); подтверждение соглашения
	Sleep(1000)
	Send("{ENTER}")
	ToolTip($aLogins[$i] & "," & $aPasswords[$i], 1143, 0)
	Sleep(1000)
	FileWriteLine($hFile, $aLogins[$i] & "=" & $aPasswords[$i])
	MouseMove(940, 530, 0)
	Sleep(6000)
	MouseClick("left")
Next
FileClose($hFile)
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Не выходит, все-равно ошибка в строке
FileWriteLine($hFile, $aLogins[$i] & "=" & $aPasswords[$i])
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
21b6d5ea65ac.jpg
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Ошибка говорит, что ты обратился к индексу массива, которого не существует(например, число логинов 10, а ты пытаешься получить 11-й, а его просто нет).
У тебя должно быть написано так:
Код:
For $i = 1 To $aLogins[0]

А у тебя скорее всего там стоит определенное число.

В $aLogins[0] функция _FileReadToArray заносит количество строк в файле.

Если ошибка не в этом - снова выкладывай скрипт полностью =)
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Вроде все получилось, скрипт работает, но есть маленькие недочеты:
-первый логин и пасс вписываются не из списка, а исходя из кол-ва их в списке, т.е. в списке 3434 штуки логинов и паролей, скрипт и пишет: логин-3434, пароль-3434 почему так, остается загадкой :scratch:
-в первой строке в файле check.txt ставится автоматически пробел и далее запись идет уже со 2-ой строки.
Все это мелочи, но если их можно убрать,то посоветуйте как.
Вот весь скрипт в рабочем варианте:
Код:
#requireadmin
#include <File.au3>
#include <Array.au3>
HotKeySet("{ESC}", "Terminate")
Global $Paused
HotKeySet("{z}", "TogglePause")
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',1143,20)
    WEnd
    ToolTip("")
EndFunc
Func Terminate()
    Exit 0
EndFunc;==>Terminate
Dim $aLogins, $aPasswords ;объявляем массивы
;читаем файл в массив
_FileReadToArray('login.txt', $aLogins) ;файл с логинами
_FileReadToArray('pass.txt', $aPasswords);файл с паролями
For $i = 0 To 100 Step 1
    WinWait("Lineage II", "")
    If Not WinActive("Lineage II", "") Then WinActivate("Lineage II", "")
    WinWaitActive("Lineage II", "")
    Sleep(100)
    MouseClick("left", 600, 301, 1, 0)
    Sleep(100)
    MouseClick("left", 600, 301, 2, 0)
    MouseClick("left")
    Sleep(500)
    MouseClick("left")
    Send("{BS 20}")
    Sleep(500)
    Send($aLogins[$i]);Логин 1
    MouseClick("left", 598, 321, 2, 0)
    Sleep(600)
MouseClick("left")
    Send("{BS 20}")
    Send($aPasswords[$i]);Пароль 1
    Send("{ENTER}")
    Sleep(4000)
    Send("{ENTER}"); подтверждение соглашения
    Sleep(1000)
    Send("{ENTER}")
    ToolTip($aLogins[$i] & "," & $aPasswords[$i], 1143, 0)
    Sleep(1000)
$hFile = FileOpen("check.txt", 1)
If $hFile = -1 Then
    Exit
EndIf
	FileWriteLine($hFile, $aLogins[$i] &":"& $aPasswords[$i])
FileClose($hFile)
    MouseMove(940, 530, 0)
    Sleep(6000)
    MouseClick("left")
Next
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Ну я же указал как лучше делать - открытие файла и закрытие лучше делать до и после циклов записи, а у тебя он открывается и закрывается каждый раз 3000 раз это же медленно!
По поводу замечаний - указал же как правильно строить цикл с $i = 1 до $aLogins[0], а у тебя $i = 0 (в $aLogins[0] как раз и храниться количество строк в файле логины.txt).
А по поводу пробелов в начале файла check.txt - похоже ты сам создал пустой файл с пробелом до запуска скрипта(скрипт пишет строки в конец файла), удали файл и скрипт уже сам его создаст.
Код:
#RequireAdmin
#include <File.au3>
#include <Array.au3>
HotKeySet("{ESC}", "Terminate")
Global $Paused
HotKeySet("{z}", "TogglePause")
Func TogglePause()
	$Paused = Not $Paused
	While $Paused
		Sleep(100)
		ToolTip('Script is "Paused"', 1143, 20)
	WEnd
	ToolTip("")
EndFunc   ;==>TogglePause
Func Terminate()
	Exit 0
EndFunc   ;==>Terminate
Dim $aLogins, $aPasswords ;объявляем массивы
;читаем файл в массив
_FileReadToArray('login.txt', $aLogins) ;файл с логинами
_FileReadToArray('pass.txt', $aPasswords);файл с паролями
$hFile = FileOpen("check.txt", 1) ; открываем файл до начала циклов записи
If $hFile = -1 Then
	Exit
EndIf
For $i = 1 To $aLogins[0] ; цикл начинается с первого элемента и идет до последнего элемента
	WinWait("Lineage II", "") ; количество элементов в массиве при _FileReadToArray('file', $array) хранится в $array[0]
	If Not WinActive("Lineage II", "") Then WinActivate("Lineage II", "")
	WinWaitActive("Lineage II", "")
	Sleep(100)
	MouseClick("left", 600, 301, 1, 0)
	Sleep(100)
	MouseClick("left", 600, 301, 2, 0)
	MouseClick("left")
	Sleep(500)
	MouseClick("left")
	Send("{BS 20}")
	Sleep(500)
	Send($aLogins[$i]);Логин 1
	MouseClick("left", 598, 321, 2, 0)
	Sleep(600)
	MouseClick("left")
	Send("{BS 20}")
	Send($aPasswords[$i]);Пароль 1
	Send("{ENTER}")
	Sleep(4000)
	Send("{ENTER}"); подтверждение соглашения
	Sleep(1000)
	Send("{ENTER}")
	ToolTip($aLogins[$i] & "," & $aPasswords[$i], 1143, 0)
	Sleep(1000)
	FileWriteLine($hFile, $aLogins[$i] & ":" & $aPasswords[$i])
	MouseMove(940, 530, 0)
	Sleep(6000)
	MouseClick("left")
Next
FileClose($hFile) ; после всех циклов записи закрываем файл
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
А чем плохо это? :scratch:

Код:
For $i = 1 To UBound($aLogins)
 
Верх