Caractès asiatiques dans vbscript // gestion d'erreur

Résolu
tibullle Messages postés 3 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 19 juillet 2009 - 19 juil. 2009 à 12:30
tibullle Messages postés 3 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 19 juillet 2009 - 19 juil. 2009 à 13:36
Bonjour à tous, Mon script, qui parcourt une arborescence de lecteur, s'arrête sur des noms de fichiers comprenant des caractères asatiques.
En fait il les lit sans générer d'erreur, en remplaçant ces caractères par des points d'interrogation dans l'output. Mais je demande à mon script de réécrire l'arborescence dans un log et là il plante quand il s'agit de copier le nom du fichier en question.
Pour couronner le tout je n'arrive pas à sortir une erreur dans un:
----------
Sub errGestion
If Err.Number <> 0 Then
MsgBox ("Erreur N°" & CStr(Err.Number) & " " & Err.Description)
Err.Clear ' Efface l'erreur.
end If
End Sub

-------------------
J'ai essayé un Instr sur les "?" sans succès.
Je peux naturellement faire un Resume Next mais alors je loupe quelques fichiers.

Merci beaucoup d'avance

Christophe

2 réponses

tibullle Messages postés 3 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 19 juillet 2009
19 juil. 2009 à 12:41
Attendez, je progresse. En fait l'erreur se produit dès la lecture du nom (ce qui est logique mais comme il sortait un nom à l'output de mon éditeur je pensais que c'était à l'écriture)
J'ai Ô miracle mon MsgBox qui me signale une erreur n°5

Je suppose que je vais pouvoir travailler là-dessus .

-------- Début code vbs --------

On Error Resume Next 'Pour éviter l'interruption du script (l'affichage d'une erreur)


Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")

TextFile = "testfile94.txt"

'oFSO.CreateTextFile TextFile,ForWriting

'Set o1Stream = oFSO.OpenTextFile(".\STREAM1.Log",1) ' 1=lecture 2=efface "." pour dossier actif !
Set o2Stream = oFSO.OpenTextFile(TextFile,8) ' 8= Ajout
'Folder= InputBox ("Quel lecteur ou chemin de dossier ?")
'Folder ="e:"
Showtree oFSO.GetFolder (".\.")
errGestion


Sub Showtree (oFolder)
Dim oSubFolder,oFile
WScript.Echo"-------------------"
WScript.Echo oFolder.Path
WScript.Echo"-------------------"
sLine=oFolder.Path
' errGestion
o2Stream.WriteLine sLine
' errGestion

For Each oFile In oFolder.Files
WScript.Echo oFile.name
sLine=oFile.name
' errGestion
WScript.Echo "sline : ",sLine
errGestion
o2Stream.WriteLine sLine
' errGestion
Next
For Each oSubfolder In oFolder.SubFolders
Showtree oSubFolder
Next
End Sub




' GESTION D'ERREURS

Sub errGestion
If Err.Number <> 0 Then
MsgBox ("Erreur N°" & CStr(Err.Number) & " " & Err.Description)
Err.Clear ' Efface l'erreur.
end If
End Sub

------------------- fin code vbs
3
tibullle Messages postés 3 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 19 juillet 2009
19 juil. 2009 à 13:36
Nouveau soucis: ok je peux détecter le fichier coupable dans le log de mon EDI, mais j'espérais pourvoir agir directement sur le fichier en ressortant son path.

Comment se fait-il qu'une fois le programme stoppé par l'erreur (MsgBox ok), je n'aie plus l'accès aux variables oFolder ou oFile de ma boucle ?) Je peux bricoler en passant par la lecture d'un log à part ne listant que oFolder par exemple, mais j'aimerais beaucoup avoir l'explication ;)

merci d'avance

Christophe
0
Rejoignez-nous