Page 1 sur 1
[...] Scan d'un répertoire:ftp ou Share directory
Posté : mer. 15 déc. 2010 09:27
par makakiel
Bonjours,
Je cherche à être alerté de l'arrivé d'un fichier dans un répertoires.
Je vois 2 possibilité:
-En temps réel dès que le fichier arrive je reçois un message avec le nom du fichier
-En différé dans le sens ou toutes les x minutes le scripte check le répertoire et me sort une liste contenant le ou les fichier(s) arrivé dans le répertoire depuis la précédente vérification
Le répertoires en question est un dossier partagé
L'idéal serait de faire les vérification par ftp!
Merci de votre aide!
Re: [...] Scan d'un répertoire
Posté : mer. 15 déc. 2010 11:16
par Tlem
Re: [...] Scan d'un répertoire
Posté : mer. 15 déc. 2010 14:35
par makakiel
J'avais été grandement intéressé par "FileSystemMonitor" mais cette au3 manque cruellement d'exemple simple
Pour le script qui a été il utilise si j'ai bien compris le système d'incrémentation de son appareille photo.
CAD qu'il vérifie si il n'y a pas un numéro de phot plus grand plus grand que ceux qui sont déjà la. Beaucoup trop restreint en mon sens.
De plus j'ai aussi regardé a la gestion des Thread qui selon toi n'est pas des meilleures
Pour finir je voudrais faire faire faire la vérification de nouveau fichier sur un ftp.
Re: [...] Scan d'un répertoire
Posté : mer. 15 déc. 2010 14:49
par Tlem
La question d'origine parle d'un répertoire et pas d'un répertoire distant ...
makakiel a écrit :Bonjours,
Je cherche à être alerté de l'arrivé d'un fichier dans un répertoires.
Certes, sur la fin de votre message vous dites :
makakiel a écrit :L'idéal serait de faire les vérification par ftp!
Mais bon, il n'était pas évident d’interpréter exactement votre demande qui c'est transformé dans votre dernier message par:
makakiel a écrit :Pour finir je voudrais faire faire faire la vérification de nouveau fichier sur un ftp.
Êtes vous sur de vouloir faire trois fois la vérification ...
Bon, trêve de plaisanterie. Pour votre demande, je ne vois qu'une seule possibilité. C'est de lire régulièrement (toutes les X secondes) la liste des fichiers présents sur le dossier de votre ftp.
Pour cela vous devrez vous mettre dans le bon dossier avec la commande
_FTP_DirSetCurrent, puis faire la liste des fichiers présents avec
_FTP_ListToArray et enfin faire la différence entre le premier tableau et le second.

Re: [...] Scan d'un répertoire
Posté : mer. 15 déc. 2010 15:19
par makakiel
LOL je vais vais vais testé sa et aussi "FileSystemMonitor" il parait vraiment bien fois que l'on sait l'utilisé!
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : mer. 15 déc. 2010 16:44
par makakiel
1er test avec l'udf FileSystemMonitor
► Afficher le texte
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListviewConstants.au3>
#Include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <FileSystemMonitor.au3>
$fs_event = ObjCreate("Scripting.Dictionary")
do
; Setup File System Monitoring
_FileSysMonSetup(3, "T:\", "")
; Handle Directory related events
_FileSysMonDirEventHandler()
_FileSysMonSetDirMonPath("T:\")
_FileSysMonSetShellMonPath("T:\")
Until $fs_event.item(Hex(0x00000001))
MsgBox(0,"ADD", $event_value)
Se solve par un gros plantage de l'application!
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : jeu. 16 déc. 2010 17:05
par makakiel
Si une âme charitable a une solution pour utilisé l'UDF FileSystemMonitor
Je vais passé a l'application de l'idée Tlem (j'avoue j'ai du cogité pour la comprendre) j'aime vraiment pas la
► Afficher le texte
#include <Array.au3>
#include <IE.au3>
#include <FTP.au3>
#include <FTPEx.au3>
local $server = $FTPlink
local $username = $FTPuser
local $pass = $FTPpxd
$Open = _FTPOpen($FTPuser)
$Conn = _FTPConnect($Open, $server, $username, $pass)
_FTP_DirSetCurrent($Conn,'/')
MsgBox('','',_FTP_DirGetCurrent($Conn,'\'))
local $TabOri = _FTP_ListToArray($Conn,0)
_ArrayDisplay($TabOri)
MsgBox(0,"tab",$TabOri)
$Ftpc = _FTPClose($Open)
Me retourne 0...
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : jeu. 16 déc. 2010 21:17
par Tlem
L'UDF FileSystemMonitor est prévu pour un fonctionnement local. En FTP il vaut mieux utiliser la solution que je vous ai suggéré.
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : ven. 17 déc. 2010 16:05
par makakiel
Je travail justement dessus!
Constat et
_FTP_FindFileFirst et _FTP_ListToArray me retourne tout les 2 0 au contenu du fichier.
► Afficher le textetext
local $server = $FTPlink
local $username = $FTPuser
local $pass = $FTPuser
$Open = _FTPOpen($FTPuser)
$Conn = _FTPConnect($Open, $server, $username, $pass)
MsgBox('','',_FTP_FindFileFirst($Conn,'/','',0))
local $TabOri = _FTP_ListToArray($Conn,0)
MsgBox('',"",$TabOri)
_ArrayDisplay($TabOri)
$Ftpc = _FTPClose($Open)
L'utilisateur FTP lors de sa connexion arrive dans un répertoire prédéfinit.
se répertoire contient un certain nombre de fichier
Donc normalement je n'ai pas a utilisé _FTP_DirGetCurrent dans la mesure ou le répertoire ou il se trouve n'a pas de répertoire parent ou enfant
si il ne trouve rien c'est sois je me suis planté dans ma ligne de code (fort probable) sois en faite il n'est pas connecté !
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : ven. 17 déc. 2010 16:23
par bloodwolff
_Ftpconnect te renvoit une erreur ?
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : ven. 17 déc. 2010 16:49
par makakiel
Code : Tout sélectionner
#include <Array.au3>
#include <IE.au3>
#include <FTP.au3>
#include <FTPEx.au3>
_ftpList()
Func _ftpList()
local $server = '113.92.31.30'
local $username = 'Envoi_vers_PDA'
local $pass = 'Envoi_vers_PDA'
local $path = "/"
Dim $dwError , $szMessage
$Open = _FTPOpen('TEST')
$Conn = _FTPConnect($Open, $server, $username, $pass)
_FTP_GetLastResponseInfo($dwError, $szMessage)
ConsoleWrite("Error: " & $dwError & @CRLF & "Message: " & $szMessage & @CRLF)
$Ftpp = _FtpPutFile($Conn,$path,'conf.ini')
_FTP_DirSetCurrent($Conn,$path)
IF @error Then
msgbox(0,'check','error01')
EndIf
$getTab = _FTP_ListToArray($Conn,2,$INTERNET_FLAG_RELOAD)
If @error Then
msgbox(0,'check','error02')
EndIf
MsgBox(0,'test',$getTab)
_ArrayDisplay($getTab ,'')
$Ftpc = _FTPclose($Open)
EndFunc
Techniquement ça devrait marcher et pourtant non!
Tout le message que je mets pour vérifié si il y a une erreur m'en retourne
A part la connexion! et l'envoi de fichier qui arrive dans le bon répertoire la pas de soucis
Please HELP!
auriez vous une version safe de FTPEx.au3
a part l'include je ne vois pqs se qui pourrait clocher
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : ven. 17 déc. 2010 16:51
par makakiel
bloodwolff a écrit :_Ftpconnect te renvoit une erreur ?
Zut je n'avait pas vu ton message avant de posté
Donc quand je demande d'envoyé un message d'erreur il me l'affiche.
J'ai mis des balises un peux partout pour voir d'où cela pouvais venir.
Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : ven. 17 déc. 2010 17:07
par bloodwolff
Je ne vois pas d'erreur dans la syntaxe , tu peux toujours tenter de jouer avec les paramètres optionnels de ftp_connect , le port par exemple. Sinon je vois pas

Re: [...] Scan d'un répertoire:ftp ou Share directory
Posté : ven. 17 déc. 2010 17:51
par makakiel
J'ai fais des testes
et je peux faire des transfert des deletes dans le répertoires
mon directory est bon
j'ai les droits lecture écriture mon non plus .. un peux désespérer je dois dir
Merci je vais cherché sur la configuration du ftp pour voire si ça viens de la
et aussi comment récupéré l'état de la connexion?
btw Merci tu me rassure je devenais fou!