Что нового

Подсчет строк в Log файле приложения PuTTY

Alessandro2981

Новичок
Сообщения
5
Репутация
0
Здравствуйте!
Версия приложения AutoIT - 3.3.12.0

Создаю скрипт для обработки одних и тех же действий в программе PuTTY. Программу настроил так, чтобы все время обновляла putty.txt файл, когда происходит какое-либо действие на экране.

Так как PuTTY работает с сервером, то данные не всегда обрабатываются моментально, нужно учитывать задержки.
Часто использовал комманду Sleep(), но не всегда она срабатывает так как нужно, а увеличивать время Sleep тоже не хочется, так как нужно обрабатывать из Excel 2 тысячи строк и тут скорость важна.

Хочу сделать так, чтобы AutoIT считал количество строк перед выполнением комманды, и ждал когда же колличество строк увеличится. И если увеличилось на нужное колличество строк, то продолжать работу.
Также хочу сделать чтобы в этих добавленных строках осуществлялся поиск "Error text" текста ошибки, и если он найден, то прекращать работу с MsgBox.

Может кто помочь с этим? Есть основы Visual Basic, а в AutoIT еще не особо разбираюсь.

Вот код:
Код:
#include <Excel.au3>
#include <Array.au3>

$oExcel = ObjCreate('Excel.Application')
$oExcel.Visible = True ;True to see excel window
$oExcel.WorkBooks.Open("C:\ALEKSANDRS\Versus\foto.xlsx")
$oExcel.Worksheets.Select("Foto")
;~ #cs ---------------- MAIN CODE, Don't delete ---------------------------------------------------------------------------------------------------
Run("C:\putty\PUTTY.EXE")
WinWaitActive("PuTTY Configuration")
MouseClick("left",787, 482, 2)
WinWaitActive("PuTTY")
Sleep(1000)
Dim $user = "****"
Dim $pass = "****"
Send($user)
Send("{ENTER}")
Sleep(1000)
Send($pass)
Send("{ENTER}")
Sleep(1000)
Send("v")
Send("{ENTER}")
Sleep(200)
Send("{ENTER}")
Sleep(100)
Send("um")
Sleep(100)
Send("vp")
Sleep(50)
Send("{ENTER}")
;~ #ce -------------------------------------------------------------------------------------------------------------------------------------------
;Start excel loops

Global $RowCount = $oExcel.ActiveSheet.UsedRange.Rows.Count

For $ValRow = 2 To 20
   If $oExcel.Activesheet.Cells($ValRow, 8).Value = "1" Then
	  ContinueLoop
   EndIf
$ProdNR = $oExcel.Activesheet.Cells($ValRow, 1).Value
$PolNR = $oExcel.Activesheet.Cells($ValRow, 2).Value
$Val = $oExcel.Activesheet.Cells($ValRow, 3).Value
Send($ProdNR)
Send($PolNR)
Send("{ENTER}")
Sleep(1000) ;Nado proveritj zaderzhku
Send("{HOME}")
Send("g{ENTER}") ;To go deeper
Sleep(1000)
Send("{DOWN 7}")
Send("z{ENTER}")
Send("{DOWN}")
Send("999{ENTER}{F9}")
Sleep(1000)
Send("{F8}")
Sleep(500)
Send("{DELETE 3}")
Send($Val)
Send("{ENTER}") ; Vveli T bukvu
Sleep(1000)
Send("{F9}")
Sleep(1000)
Send("{F9}")
Sleep(5000) ; Nado proveritj zaderhzku
Send("{F2}")
Sleep(500)
Send("{HOME}x{ENTER}")
Sleep(200)
Send("{F9}")
Sleep(1000)
Send("{HOME}x{ENTER}")
Sleep(500) ;Poslednjaa zaderzhka
;~ MsgBox(64, "Box Name", "For this row ProductNR is: " & $ProdNR & " PolNR: " & $PolNR & " And Value: " & $Val)
   $oExcel.Activesheet.Cells($ValRow, 8).Value = "1"
Next
	$oExcel.Application.Quit
	Sleep(1000)
	Send("{ENTER}")


Хочу поставить проверку там где есть надпись ;Nado proveritj zaderzhku
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Alessandro2981
Почитайте справку по PuTTY - "Standard command-line options"
Попробуйте работать через командную строку.
 
Верх