[VBScript] Logiciel de transfert de données

Fermé
Linthree Messages postés 85 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 juin 2009 - 17 juin 2009 à 11:25
Linthree Messages postés 85 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 juin 2009 - 22 juin 2009 à 13:34
Bonjour,

Je suis actuellement en stage et je travaille sur un projet ou je dois develloper un logiciel de transfert fichier de manière intélligente entre differents postes d'un réseau.
Tout se passe bien pour le moment mais je dois gerer un cas où un cable réseau serait débranché durant le transfert et la je ne sais pas comment faire, le probleme étant que je travaille depuis une base de données censée se mettre à jour en fonction de l'état du fichier (vide, copié, installé), mais dans ce cas la, lorsque je débranche le cable, l'état se met sur " en cours de téléchargement" et y reste car on sort de la boucle cencée finir le transfert et mettre la base de données en état "copié".

Je voudrais donc savoir si il est possible de créer une condition pour gérer ce cas où si le programme s'arette automatiquement lorsque le cable est débranché( ce que je crains).

La partie du code sur laquelle j'essai de mettre cela en place est la suivante :

If Ftaille(logiciel) = "ok" then 'On verifie si l'espace disque est suffissant pour copier le fichier.
   If objRecordsetPcopie.Fields.Item("réseau") = "hd" then 'Si le réseau du poste courant est HD alors		

var = 0	'var vaut 0 quand le réseau est en HD, var sert dans 2 sous programmes afin de déclancher le téléchargement depuis le serveur.		

 call Pcopier(logiciel,"sintra8",var,dl) 'Appel de la procedure copier.	

 call spgmcopie(hostname,logiciel,dl) 'Sous programme qui effectue un controle sur la taille du fichier copié et qui gere une éventuelle erreur.


(J'ai pas reussi a mettre l'indentation sur la page de saisie :s )

Je pense que si il est possible de creer une condition pour vérifier cela il serait pas mal de le faire avec le ping, après c'est une idée comme une autre et je suis ouvert à toutes propositions de votre part :)

Dernier petit commentaire :
Le cable pouvant se débrancher à tout moment je ne sais pas à quelle endroit placer une éventuelle condition de test, donc si vous avez une idée... :)

J'ai essayé d'etre le plus clair possible mais la problématique étant relativement complexe si vous n'avez pas suivi une partie (ou l'ensemble [ce que je n'espere pas cependant]) je vous invite à relire la partie(ou l'ensemble) que vous n'avez pas compris :D
Blague à part, si vous ne comprenez pas quelque chose ou que vous voulez des info suplémentaires je me ferait un plaisir de vous les donner :)

Merci d'avance
Bonne journée
Cordialement Linthree
A voir également:

8 réponses

Linthree Messages postés 85 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 juin 2009 13
18 juin 2009 à 08:42
Bouhouuuuu ='(
Personne ne m'aide....
Allez un petit effort :)
C'est interessant comme sujet non? :p
0
Linthree Messages postés 85 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 juin 2009 13
22 juin 2009 à 08:51
Bonjour,
Je n'ai toujours pas la solution, donc si vous avez une idée...
:)
Merci d'avance
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
22 juin 2009 à 09:52
Bonjour,

Effectivement le ping serait une bonne soution.
Je le mettrais "en 1° logne" pour tester l'2tat du réseau avant d'effectuer un transfert sur un ordi ou un autre...

regarde ce script (activexperts est une mine d'or pour des exemples de scripts) à adapter si tu envoies toujours sur le m^me ordi
http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/client/retrieving/
strMachines = "atl-dc-01;atl-win2k-01;atl-nt4-01;atl-dc-02"
aMachines = split(strMachines, ";")
 
For Each machine in aMachines
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
        ExecQuery("select * from Win32_PingStatus where address = '"_
            & machine & "'")
    For Each objStatus in objPing
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then 
            WScript.Echo("Computer " & machine & " is not reachable") 
        End If
    Next
Next


dans ce site, tu as aussi des exemples intéressants avec WMI...

en espèrant que...
Bon courage

0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
22 juin 2009 à 09:54
re, pour la coupure en cours de transfert, regarde du coté de monitoring mais...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Linthree Messages postés 85 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 juin 2009 13
22 juin 2009 à 12:07
Merci de ta réponse mais le probleme c'est que j'utilise deja ce code comme fonction pour tester au tout début de ma boucle si le serveur est joignable.

Mon souci est donc autre, quand le serveur est joignable, on rentre dans la boucle de transfert mais si pendant ce transfert un cable se débranche mon programme se fini autamatiquement sans passer par la suite du code, suite qui est censée envoyer un message d'erreur le cas échéant.

If Ftaille(logiciel) = "ok" then 'On verifie si l'espace disque est suffissant pour copier le fichier.
	If objRecordsetPcopie.Fields.Item("réseau") = "hd" then 'Si le réseau du poste courant est HD alors
		var = 0	'var vaut 0 quand le réseau est en HD, var sert dans 2 sous programmes afin de déclancher le téléchargement depuis le serveur.
		call Pcopier(logiciel,"sintra8",var,dl) 'Appel de la procedure copier.
		logiciel = objRecordsetPcopie3.Fields.Item("logiciel") 
		Set objFolder = objFSO.GetFolder("C:\windows\dit\install\"&logiciel)
		If objFolder.size > 0 Then 'Permet de vérifier que le fichier et son contenu est bien été copié.
			Dl = 1 'Dl = 1 si le fichier a été correctement copié, sinon il vaut 0.
			call MAJ(hostname,logiciel,dl)'Permet de mettre la base de donnée à jour
		else
			nom = "ErrCopy"
			Mess = "La copie du dossier "&logiciel&" n'a pas pu s'effectuer correctement"
			call ErrorRepport(Nom,Mess) 'On envoi un message d'erreur si le fichier a été mal copié
			dl = 0 
			call MAJ(hostname, logiciel, dl)'Permet de mettre la base de donnée à jour
		End If


Quand j'arrive cette partie du code, j'ai avant cela vérifié que mon serveur soit joignable mais lorsque j'arrive à la ligne " call Pcopier(logiciel,"sintra8",var,dl) 'Appel de la procedure copier.", qui lance la copie du fichier depuis le serveur j'ai alors mon probleme si un cable réseau se débranche car je ne rentre pas dans mon "else" qui doit m'envoyer mon message d'erreur.

Y a t-il un moyen, en placant une condition au bon endroit de gérer le cas ou l'on commence le transfert , suivi d'une rupture de connection au serveur?
Ou est ce que dos sortautomatiquement du programme en cas d'erreur?

Merci d'avance :)
Cordialement Linthree
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
22 juin 2009 à 12:25
Re,

Bon, ça dépasse mon petit niveau!
je te conseille, si tu ne l'as pas déjà fait, d'aller sur ce forum spécialisé Vbscript (regarde leur FAQ avant de poser ta question)
https://www.developpez.net/forums/f292/autres-langages/general-visual-basic-6-vbscript/vbscript/

bon courage
0
Linthree Messages postés 85 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 juin 2009 13
22 juin 2009 à 13:33
Ok merci quand même d'avoir pris le temps de lire mon probleme et d'essayer d'y repondre :)

Bonne continuation a toi,

Codialement
0
Linthree Messages postés 85 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 juin 2009 13
22 juin 2009 à 13:34
Si d'autres personnes ont des idées je prend toujours :)

Merci d'avance
0