Test copie impossible

Le
Youri Ligotmi
Bonjour

Avec un script vbs je dois copier un fichier texte dans tout un tas de
répertoires, ces répertoires sont surveillés en taille par Quota Server
donc il est possible que la copie échoue.
Comment peut-on diagnostiquer ça en vbs (genre errorlevel), sans
vérifier que le fichier est présent parce qu'il est possible qu'un
fichier du même nom soit déjà présent dans le répertoire?

Merci d'avance

YL
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LAURENT [MVP]
Le #18726851
"Youri Ligotmi" news:499c91a2$0$31462$
| Bonjour

Bonjour,

Note: Congés terminés ;-(

| Avec un script vbs je dois copier un fichier texte dans tout un tas de
| répertoires, ces répertoires sont surveillés en taille par Quota
| Server donc il est possible que la copie échoue.
| Comment peut-on diagnostiquer ça en vbs (genre errorlevel), sans
| vérifier que le fichier est présent parce qu'il est possible qu'un
| fichier du même nom soit déjà présent dans le répertoire?

Le script VBScript ci-dessous effectue la copie d'un fichier dans un
dossier dont le disque est surveillé par le système de quota de disque
natif Microsoft Windows 2003 pour l'utilisateur courant. J'ai fixé à cet
utilisateur une limite de 5 Mo. Celui-ci a déjà consommé 4,12 Mo donc la
copie du fichier système va échouer. C'est le but non ;-)

--- CodeSnippet ---
On Error Resume Next ' gestion des erreurs
Set oFs=CreateObject("Scripting.FileSystemObject")
oFs.CopyFile "C:WindowsSystem32Kernel32.dll", "D:test", True
If Err.Number<> 0 Then
WScript.Echo "Oops ! An error occured:0x" & Hex(Err.Number)
End If
--- CodeSnippet ---

En exécutant ce script, j'obtiens en retour l'erreur 0x80070070

Avec l'outil Win32Error, la traduction de ce code correspond à :

Espace insuffisant sur le disque.

Win32Error :
http://glsft.free.fr/index.php?option=com_content&task=view&idW&Itemid(

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Youri Ligotmi
Le #18727481
Gilles LAURENT [MVP] a écrit :
"Youri Ligotmi" news:499c91a2$0$31462$
| Bonjour

Bonjour,

Note: Congés terminés ;-(

| Avec un script vbs je dois copier un fichier texte dans tout un tas de
| répertoires, ces répertoires sont surveillés en taille par Quota
| Server donc il est possible que la copie échoue.
| Comment peut-on diagnostiquer ça en vbs (genre errorlevel), sans
| vérifier que le fichier est présent parce qu'il est possible qu'un
| fichier du même nom soit déjà présent dans le répertoire?

Le script VBScript ci-dessous effectue la copie d'un fichier dans un
dossier dont le disque est surveillé par le système de quota de disque
natif Microsoft Windows 2003 pour l'utilisateur courant. J'ai fixé à cet
utilisateur une limite de 5 Mo. Celui-ci a déjà consommé 4,12 Mo donc la
copie du fichier système va échouer. C'est le but non ;-)

--- CodeSnippet ---
On Error Resume Next ' gestion des erreurs
Set oFs=CreateObject("Scripting.FileSystemObject")
oFs.CopyFile "C:WindowsSystem32Kernel32.dll", "D:test", True
If Err.Number<> 0 Then
WScript.Echo "Oops ! An error occured:0x" & Hex(Err.Number)
End If
--- CodeSnippet ---

En exécutant ce script, j'obtiens en retour l'erreur 0x80070070

Avec l'outil Win32Error, la traduction de ce code correspond à :

Espace insuffisant sur le disque.

Win32Error :
http://glsft.free.fr/index.php?option=com_content&task=view&idW&Itemid(




Merci

Ca marche terrible, pas besoin de rentrer dans le détail du type
d'erreur: je journalise les erreurs et je compare ça avec les
répertoires bloqués par QS.
Merci pour votre aide, pas simple de passer du batch au vb...

YL
Gilles LAURENT [MVP]
Le #18727601
"Youri Ligotmi" news:49a00df4$0$5134$
| Merci
|
| Ca marche terrible, pas besoin de rentrer dans le détail du type
| d'erreur: je journalise les erreurs et je compare ça avec les
| répertoires bloqués par QS.
| Merci pour votre aide, pas simple de passer du batch au vb...

Merci pour ce rapide retour !
N'hésitez pas à revenir vers nous.

<HS>
Lors de mes tests de quota, j'ai abimé mon serveur 2003
=> fausse manip :-(
Je vous rassure, tout est maintenant en ordre ! Ouf ;-)
<HS>

Note: HS=Hors Sujet ! Et non pas Hors Service ;-)

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
jbongran
Le #18730211
"Youri Ligotmi" news:499c91a2$0$31462$
Bonjour

Avec un script vbs je dois copier un fichier texte dans tout un tas de
répertoires, ces répertoires sont surveillés en taille par Quota Server
donc il est possible que la copie échoue.
Comment peut-on diagnostiquer ça en vbs (genre errorlevel), sans vérifier
que le fichier est présent parce qu'il est possible qu'un fichier du même
nom soit déjà présent dans le répertoire?

Merci d'avance

YL




Créer un fonction qui prendra trois paramètres: le fichier source, le chemin
cible, le nombre d'erreurs.
Appeler la fonction avec un compteur d'erreur a 0
En début de fonction mettre un On Error Resume Next
et positionner la valeur de la fonction sur faux

Evaluer le compteur d'erreur afin d'éviter d'avoir une boucle sans fin en
cas d'erreur
If intCountError > 10 Then Exit Function
Effectuer la copie en utilisant le fso
NomFunction = False
Evaluer le code d'erreur par quelque chose du genre:
If Err.Number <> 0 Then
intCountError = intCountError +1
Err.Clear
' Mettre une pause 2 sec
WScript.Sleep 2000
' Rappeler la fonction avec les paramètres et le compteur d'erreur
Else
NomFunction = True
Exit Function
End If

En fin c'est une idée, pas un code complet ;-)
N'hésites pas si ce n'était pas clair
Youri Ligotmi
Le #18745141
jbongran a écrit :
"Youri Ligotmi" news:499c91a2$0$31462$
Bonjour

Avec un script vbs je dois copier un fichier texte dans tout un tas de
répertoires, ces répertoires sont surveillés en taille par Quota
Server donc il est possible que la copie échoue.
Comment peut-on diagnostiquer ça en vbs (genre errorlevel), sans
vérifier que le fichier est présent parce qu'il est possible qu'un
fichier du même nom soit déjà présent dans le répertoire?

Merci d'avance

YL




Créer un fonction qui prendra trois paramètres: le fichier source, le
chemin cible, le nombre d'erreurs.
Appeler la fonction avec un compteur d'erreur a 0
En début de fonction mettre un On Error Resume Next
et positionner la valeur de la fonction sur faux

Evaluer le compteur d'erreur afin d'éviter d'avoir une boucle sans fin
en cas d'erreur
If intCountError > 10 Then Exit Function
Effectuer la copie en utilisant le fso
NomFunction = False
Evaluer le code d'erreur par quelque chose du genre:
If Err.Number <> 0 Then
intCountError = intCountError +1
Err.Clear
' Mettre une pause 2 sec
WScript.Sleep 2000
' Rappeler la fonction avec les paramètres et le compteur d'erreur
Else
NomFunction = True
Exit Function
End If

En fin c'est une idée, pas un code complet ;-)
N'hésites pas si ce n'était pas clair



Merci, mais j'ai pas tout compris, notamment l'intérêt de la variable
'NomFonction'.
Je m'en suis sorti avec la méthode proposée par Gilles Laurent.
Merci encore
jbongran
Le #18750991
"Youri Ligotmi" news:49a2fc1d$0$29450$
jbongran a écrit :
"Youri Ligotmi" news:499c91a2$0$31462$
Bonjour

Avec un script vbs je dois copier un fichier texte dans tout un tas de
répertoires, ces répertoires sont surveillés en taille par Quota Server
donc il est possible que la copie échoue.
Comment peut-on diagnostiquer ça en vbs (genre errorlevel), sans
vérifier que le fichier est présent parce qu'il est possible qu'un
fichier du même nom soit déjà présent dans le répertoire?

Merci d'avance

YL




Créer un fonction qui prendra trois paramètres: le fichier source, le
chemin cible, le nombre d'erreurs.
Appeler la fonction avec un compteur d'erreur a 0
En début de fonction mettre un On Error Resume Next
et positionner la valeur de la fonction sur faux

Evaluer le compteur d'erreur afin d'éviter d'avoir une boucle sans fin en
cas d'erreur
If intCountError > 10 Then Exit Function
Effectuer la copie en utilisant le fso
NomFunction = False
Evaluer le code d'erreur par quelque chose du genre:
If Err.Number <> 0 Then
intCountError = intCountError +1
Err.Clear
' Mettre une pause 2 sec
WScript.Sleep 2000
' Rappeler la fonction avec les paramètres et le compteur d'erreur
Else
NomFunction = True
Exit Function
End If

En fin c'est une idée, pas un code complet ;-)
N'hésites pas si ce n'était pas clair



Merci, mais j'ai pas tout compris, notamment l'intérêt de la variable
'NomFonction'.
Je m'en suis sorti avec la méthode proposée par Gilles Laurent.
Merci encore




Bonjour Youri,
En fait, et après avoir lu la réponse de Gilles et rerelu ta question, je
pense que c'est moi qui n'avait pas tout compris ;-)
Pour la variable NomFonction, voici un exemple:

Function MaFunction(MonParametre)
MaFunction = False ' On positionne la valeur de retour de la fonction
sur faux au départ
If MonParametre > 1 Then
MaFunction = True 'dans le cas ou MonParametre est superieur a 1 la
fonction retourne vrai
End If
End Function

Cela peut être utile dans les fonctions qui ont beaucoup de conditions et
évite de donner pour chacun des tests la valeur de retour, donc économise de
la frappe clavier...
Publicité
Poster une réponse
Anonyme