Что нового

[Автоматизация] следить за файлом

tenitii

Новичок
Сообщения
26
Репутация
0
помогите написать скрипт чтоб он следил за указаным файлом и как только тот файл будет удален программа высветит сообщение и после нажатия ок закончит слежение.
спасибо !
 

XM

Знающий
Сообщения
70
Репутация
8
А как долго следить нужно? (или как часто?)


Добавлено:
Сообщение автоматически объединено:

Код:
$file = @ScriptDir & '\file.txt'

$timeout = 10000 ; Проверка файла каждые 10 секунд...

While 1
	Sleep($timeout)
	If Not FileExists($file) Then
		MsgBox(48, 'Message', 'Файл отсутствует!')
		ExitLoop
	EndIf
WEnd
Exit(0)
 
Автор
T

tenitii

Новичок
Сообщения
26
Репутация
0
супер все работает как я и хотел !
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
а то что "по середине" скрипта пауза в 10 секунд вас не пугает ?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Совсем другой пример...

:smile:

Код:
#Include <WinAPIEx.au3>

Opt('TrayAutoPause', 0)

Global Const $sPath = @ScriptDir
Global Const $sFile = '~test.tmp' ; <= Пробуем удалить этот файл!

FileWrite($sPath & '\' & $sFile, '')

OnAutoItExitRegister('OnAutoItExit')

$hWnd = GUICreate('')
$iMsg = _WinAPI_RegisterWindowMessage('SHELLCHANGENOTIFY')
GUIRegisterMsg($iMsg, '_ShellChangeNotifyProc')
$ID = _WinAPI_ShellChangeNotifyRegister($hWnd, $iMsg, $SHCNE_DELETE, BitOR($SHCNRF_INTERRUPTLEVEL, $SHCNRF_SHELLLEVEL, $SHCNRF_RECURSIVEINTERRUPT), $sPath, 1)

While 1
    Sleep(1000)
WEnd

Func _ShellChangeNotifyProc($hWnd, $iMsg, $wParam, $lParam)

    Local $tData = DllStructCreate('dword Item1; dword Item2', $wParam)

	If _WinAPI_ShellGetPathFromIDList(DllStructGetData($tData, 'Item1')) = $sPath & '\' & $sFile Then
		Exit
	EndIf
EndFunc   ;==>_ShellChangeNotifyProc

Func OnAutoItExit()
	_WinAPI_ShellChangeNotifyDeregister($ID)
EndFunc   ;==>OnAutoItExit
 

XM

Знающий
Сообщения
70
Репутация
8
Yashied сказал(а):
Совсем другой пример...

Yashied, я тоже сначала нечто подобное хотел изобразить, т.к. использование Sleep не есть гуд, но... какое условие задачи, такое и решение ;)

И потом, автору темы до понимания вашего примера еще, сдается мне, ой как далеко... :smile:


Добавлено:
Сообщение автоматически объединено:

FlatX007 сказал(а):
а то что "по середине" скрипта пауза в 10 секунд вас не пугает ?

Пока видимо еще не пугает... :smile:
 
Автор
T

tenitii

Новичок
Сообщения
26
Репутация
0
я только 2 дня как пользуюсь етим языком програмирования до етого я не имел никокого понятия
и вот что я написал



Код:
#include <GUIConstants.au3>
#include <file.au3>
Opt("GUICoordMode", 1)
GUICreate("CASSE DEMO", 400,280)

; Create the controls
$button_1 = GUICtrlCreateButton ("CASSA 1", 150, 50, 120, 40)
$button_2 = GUICtrlCreateButton ("CASSA 2", 150, 125, 120, 40)
$button_3 = GUICtrlCreateButton ("CHIUDI", 150, 200, 120, 40)


; Show the GUI
GUISetState ()

; In this message loop we use variables to keep track of changes to the radios, another
; way would be to use GUICtrlRead() at the end to read in the state of each control
While 1
   $msg = GUIGetMsg()
   Select
       Case $msg = $button_3
         MsgBox(0, "", "PROGRAMMA VERRA TERMINATA") 
         ProcessClose("SoEcrCom.exe")
		 Exit
	  Case $msg = $GUI_EVENT_CLOSE
         MsgBox(0, "", "PROGRAMMA VERRA TERMINATA") 
         ProcessClose("SoEcrCom.exe")
		 Run ( "C:\Program Files\Ditron\WinEcrCom 1.9\Utilities\WinEcrConf.exe" )
		 Exit
      Case $msg = $GUI_EVENT_MINIMIZE
         MsgBox(0,"", "Dialog minimized",2)
      Case $msg = $GUI_EVENT_MAXIMIZE
         MsgBox(0,"", "Dialog restored",2)
   
      Case $msg = $button_1	  
         FileCopy ("C:\sxdir\INVIO DATI\input.txt", "C:\sxdir\")
		 ProcessClose("SoEcrCom.exe")
		 Run ( "C:\Program Files\Ditron\WinEcrCom 1.9\Utilities\WinEcrConf.exe")
         WinWaitActive("WinEcrConf","","1")
         Send("{TAB 7}")
         Send("1")
	     Send("{TAB}")
         Send("{TAB}")
         Send("{TAB}")
         Send("{ENTER}")
		 ProcessClose("WinEcrConf.exe")
		 
         Run ( "C:\Program Files\Ditron\WinEcrCom 1.9\Drivers\SoEcrCom.exe" )
         $file  = "C:\sxdir\input.txt";@ScriptDir & '\file.txt'

         $timeout = 1000 ; Проверка файла каждые 1 секунд...

    While 1
        Sleep($timeout)
        If Not FileExists($file) Then
        MsgBox(48, 'Message', 'DATI INVIATI')
        ExitLoop
    EndIf
WEnd
;Exit(0)         
$PID = ProcessExists("WinEcrConf.exe") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)

      Case $msg = $button_2
         FileCopy ("C:\sxdir\INVIO DATI\input.txt", "C:\sxdir\")
	     ProcessClose("SoEcrCom.exe")
		 Run ( "C:\Program Files\Ditron\WinEcrCom 1.9\Utilities\WinEcrConf.exe")
         WinWaitActive("WinEcrConf","","1")
         Send("{TAB 7}")
         Send("2")
	     Send("{TAB}")
         Send("{TAB}")
         Send("{TAB}")
         Send("{ENTER}")
	     ProcessClose("WinEcrConf.exe")
         Run ( "C:\Program Files\Ditron\WinEcrCom 1.9\Drivers\SoEcrCom.exe" )
		 Run ( "C:\Program Files\Ditron\WinEcrCom 1.9\Drivers\SoEcrCom.exe" )
         $file  = "C:\sxdir\input.txt";@ScriptDir & '\file.txt'

         $timeout = 1000 ; Проверка файла каждые 1 секунд...

    While 1
        Sleep($timeout)
        If Not FileExists($file) Then
        MsgBox(48, 'Message', 'DATI INVIATI')
        ExitLoop
    EndIf
WEnd
   EndSelect
WEnd



пробовал пока все работает пусть коряво но я только учусь
и хочу всем виразить спасиьбо за помощь
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
tenitii
Используй тэг [autoit][/autoit] для обрамления кода на AutoIt. Это такая кнопка на панели кнопок над полем для набора сообщений -
autoit.gif
 
Верх