Войти

Показать полную графическую версию : [решено] Чтение из фаила txt


maxd2007
08-05-2014, 17:18
Подскажите пожалуйста, возможно ли реализовать такую вещь, написал скрипт:

WinWaitActive("Название окна", "")
Send("{TAB 2}")
Local $n=0
while $n<=57
Send("{ENTER}")
$n=$n+1
WEnd

Local $x=0
while $x<=58
Send("+{TAB 2}")
$x=$x+1
WEnd

send ("15600")
Send("{TAB 2}")

send ("13332")
Send("{TAB 2}")

send ("12303")
Send("{TAB 2}")

send ("3491")
Send("{TAB 2}")

send ("13331")
Send("{TAB 2}")

send ("7576")
Send("{TAB 2}")

send ("3497")
Send("{TAB 2}")

send ("3492")
Send("{TAB 2}")

send ("13330")
Send("{TAB 2}")

send ("10185")
Send("{TAB 2}")

send ("13329")
Send("{TAB 2}")

send ("8988")
Send("{TAB 2}")

send ("12306")
Send("{TAB 2}")

send ("11275")
Send("{TAB 2}")

send ("13604")
Send("{TAB 2}")

send ("6233")
Send("{TAB 2}")

send ("6232")
Send("{TAB 2}")

send ("13600")
Send("{TAB 2}")

send ("13598")
Send("{TAB 2}")

send ("14161")
Send("{TAB 2}")

send ("12305")
Send("{TAB 2}")

send ("8990")
Send("{TAB 2}")

send ("14162")
Send("{TAB 2}")

send ("14163")
Send("{TAB 2}")

send ("13599")
Send("{TAB 2}")

send ("12307")
Send("{TAB 2}")

send ("12304")
Send("{TAB 2}")

send ("9122")
Send("{TAB 2}")

send ("8989")
Send("{TAB 2}")

send ("6231")
Send("{TAB 2}")

send ("15309")
Send("{TAB 2}")

send ("13597")
Send("{TAB 2}")

send ("13602")
Send("{TAB 2}")

send ("13318")
Send("{TAB 2}")

send ("12308")
Send("{TAB 2}")

send ("8484")
Send("{TAB 2}")

send ("15215")
Send("{TAB 2}")

send ("14164")
Send("{TAB 2}")

send ("13603")
Send("{TAB 2}")

send ("13601")
Send("{TAB 2}")

send ("11821")
Send("{TAB 2}")

send ("8370")
Send("{TAB 2}")

send ("8166")
Send("{TAB 2}")

send ("7766")
Send("{TAB 2}")

send ("6229")
Send("{TAB 2}")

send ("4977")
Send("{TAB 2}")

send ("3509")
Send("{TAB 2}")

send ("3496")
Send("{TAB 2}")

send ("3493")
Send("{TAB 2}")

send ("6228")
Send("{TAB 2}")

send ("3588")
Send("{TAB 2}")

send ("15310")
Send("{TAB 2}")

send ("12302")
Send("{TAB 2}")

send ("17250")
Send("{TAB 2}")

send ("17255")
Send("{TAB 2}")

send ("17252")
Send("{TAB 2}")

send ("17251")
Send("{TAB 2}")

Хотелось бы что бы скрипт брал данные ID из отдельного текстовика т.е. в send ("17251") цифру 17251 надо было не прописывать в скипт каждый раз, а забивать в текстовик столбиком, например: 1.txt

17251
21111
2323

то он эти данные воспримет как send ("17251"), send ("21111") и Send ("2323").
И второй вопрос, можно ли так же добавить что бы скрипт сам считал колличество стлобцов в txt и вбивал эти данные в цикл?
Извиняюсь за небольшой сумбур, если в вопросе что то непонятно, напишите что именно и я попробую перефразировать.

oz84
09-05-2014, 05:45
Что-нибудь вроде такого
;Читаем файл
$txt = FileRead(@ScriptDir & "\1.txt")
; Проверяем конец строки - DOS/Unix/Mac
Select
Case StringInStr($txt, @CRLF) > 0
$sDelimiter = @CRLF
Case StringInStr($txt, @LF) > 0
$sDelimiter = @LF
Case Else
$sDelimiter = @CR
EndSelect
; Помещаем строки в массив (если файл без заморочек
;создавался в блокноте Windows, то, вероятно, можно
;сразу заменить $sDelimiter на @CRLF и убрать Select...EndSelect выше)
$aLines = StringSplit($txt, $sDelimiter, 1)

For $i = 1 To $aLines[0]
Send($aLines[$i])
Send("{TAB 2}")
Next?
Или должно быть Send('"' & $aLines[$i] & '"')?
Ни разу не пользовался функцией Send :)

maxd2007
12-05-2014, 10:23
Спасибо большое за подробное разъяснение и пример. Вроде все понятно, отмечать пока о готовности не буду, щас попробую внедрить в свой скрипт и отпишусь/отмечусь.

maxd2007
12-05-2014, 15:20
Все работает великолепно, еще раз спасибо.

Извиняюсь, за доп вопрос, а не подскажете как можно это все заключить в цикл, что бы цикл был равен количеству столбцов в фаиле 1.txt?

maxd2007
12-05-2014, 15:41
попробовал так:
$txt = FileRead(@ScriptDir & "\1.txt")
$aLines = StringSplit($txt, 1)
Local $n=0
while $n=$aLines

For $i = 1 To $aLines[0]
Send($aLines[$i])
Send("{TAB 2}")
Next
$n=$n+1
WEnd
но не работает (((

maxd2007
12-05-2014, 15:58
аааааааааа, извиняюсь за тупость, просто че то ступил, все работает как надо. Еще раз огромное человеческое спасибо.)))))))))

oz84
15-05-2014, 03:04
maxd2007, один момент: Send работает с активным окном, по хорошему на всякий случай, если какая-то программа перехватит фокус или выдаст окно сообщения, можно добавить что-нибудь вроде
;Ищем нужное окно
$hWnd = WinWait("[CLASS:Notepad]", "", 5)
;Делаем активным на всякий случай
WinActivate($hWnd)
перед Send($aLines[$i]). [CLASS:Notepad] - это для блокнота Windows, Au3Info в помощь.




© OSzone.net 2001-2012