1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
Option Explicit 'Déclaration obligatoire des variables
'Corps de script
DIM obFolder, objShell, FSO, PATH
'Sub ProcessFolder
DIM obSubFolder, StrFolderName
'Sub Db
DIM obFolder2, nDeFichiers, strParFolderName, obFile, strFileName
DIM strP1Nomfichier, strP2NomFichier, strP3Nomfichier
DIM TnomFichier, StrP2aNomFichier, StrP2bNomFichier
'Corps de script
'Get Application object of the Windows shell.
Set objShell = WScript.CreateObject("Shell.Application")
'Get access to script folder And create the resulting file in it
Set FSO = CreateObject("Scripting.FileSystemObject")
PATH = FSO.GetParentFolderName(wscript.ScriptFullName) & "\"
'Ask the user to select a folder - Répertoire à partir duquel va débuter le traitement
set obFolder = objShell.BrowseForFolder (0,"Select the folder to process",1)
If Not obfolder IS Nothing Then 'si obfolder n'est pas rien!
'MsgBox "1 - je suis la"
ProcessFolder FSO, PATH, obFolder.self.Path
MsgBox "End !" 'à laisser
Else
MsgBox "Cancel" 'à laisser
End If
Sub ProcessFolder(FSO, PATH, FolderPath) 'PATH indispensable
'Get access to the folder
Set obFolder = FSO.GetFolder(FolderPath) 'si actif obfolder devient le chemin!
'Loop on all the subFolders And process each of them
For Each obSubFolder In obFolder.SubFolders
'StrFolderName = FSO.GetParentFolderName (obSubFolder) ' Cette ligne donne le bon rep dans le sub, mais ne fait que Db!
StrFolderName = obSubFolder.Name 'Cette ligne ne donne pas le bon rep dans le sub, mais fait tous les sub!
'MsgBox "Sub Proc fold - repertoire : " & StrFolderName 'liste bien les noms des répertoires
If (InStr(1, StrFolderName, "DB", 1) > 0) Then Db FSO, FolderPath
If (InStr(1, StrFolderName, "LAS20", 1) > 0) Then Las20 FSO, FolderPath
If (InStr(1, StrFolderName, "DI", 1) > 0) Then Di FSO, FolderPath
If (InStr(1, StrFolderName, "DT", 1) > 0) Then Dt FSO, FolderPath
If (InStr(1, StrFolderName, "2018", 1) > 0) Then Gyro FSO, FolderPath 'attention utilisation d'une année!!!!
Next
'Loop on all the subFolders And process each of them
For Each obSubFolder In obFolder.SubFolders
ProcessFolder FSO, PATH, obSubFolder.Path
Next
End Sub
SUB Db (FSO, FolderPath)
MsgBox "Yes ... sub Db!"
'Get access to the folder / Est-ce utile, oui car si non on reste dans le repéertoire précédant!! cf. remarque ci-dessous!!
Set obFolder2 = FSO.GetFolder(FolderPath & "\DB") 'si actif obFolder2 devient le chemin!
strParFolderName = Right(obFolder2, 11)
'Extraire le nom du réppertoire parent qui est en fait le nom du forage de 7 à 8 caractères
If Left (strParFolderName,1) = "\" Then strParFolderName = Mid(strParFolderName,2,7) Else strParFolderName = Mid(strParFolderName,1,8)
'Extraire le nombre de fichier du repertoire
nDeFichiers = FSO.GetFolder(FolderPath& "\DB").Files.Count
'Verifier si nombre paire (en principe toujours 2 fichiers par log dans les DB! un fichier hed et un fichier log
If ((nDeFichiers/2)-CInt(nDeFichiers/2))<>0 Then MsgBox "ATTENTION il y a " & nDeFichiers & " fichiers. C'est un nombre impaire!",16
'Vérifie la première partie du nom
For Each obFile In obFolder2.Files
strFileName = obFile.Name
'Coupe le nom de fichier en utilisant _ comme séparateur (3 parties...)
TnomFichier = Split(obFile.Name,"_",-1)
'Attribut aux variable une partie du non de fichier
strP1Nomfichier = TnomFichier(0)
strP2Nomfichier = TnomFichier(1)
strP3Nomfichier = TnomFichier(2)
If strParFolderName <> strP1Nomfichier Then MsgBox "Sub Db - attention au nom du fichier : " & obFile.Name, 16 '16 affiche message critique ....
'Ajouter une possibilité de correction
'Si pas correction demander si on efface le fichier - Voir si on peut le déplacer dans la corbeille au cas ou!
'voir si on peut revenir en début de boucle
'Vérification de la seconde partie du nom du fichier 8 car ou moins, et avant un_
'Extraction
MsgBox "str a Traiter : " & strP2NomFichier 'Renvoie le bon nom
MsgBox "Debut : " & Left(strP2NomFichier,4) ' renvoie bien DGGG ou DILx ....
MsgBox "Fin : " & Right(strP2NomFichier,4) ' renvoie bien le n° de serie
If (StrComp(Right(strP2NomFichier,4),"DGGG",1) = 0) Then MsgBox "1 - A traiter : " & strP2NomFichier : StrP2aNomFichier = Left(strP2NomFichier,4) AND strP2bNomFichier = Right(strP2NomFichier,4)
MsgBox "2nd partie : " & strP2bNomFichier 'Vide!
If (StrComp(Right(strP2NomFichier,3),"DIL",1) = 0) Then MsgBox "2 - A traiter : " & strP2NomFichier : StrP2aNomFichier = Left(strP2NomFichier,3) AND strP2bNomFichier = Right(strP2NomFichier,4)
MsgBox "2nd partie : " & strP2bNomFichier 'Vide!
If (StrComp(Left(strP2bNomFichier,1),"L",1) = 0) Then MsgBox "3 - A traiter : " & strP2NomFichier : StrP2aNomFichier = Left(strP2NomFichier,3)AND strP2bNomFichier = Right(strP2NomFichier,3)
MsgBox "2nd partie : " & strP2bNomFichier 'Vide!
MsgBox "str a traiter : " & strP2NomFichier 'Ok!!!
MsgBox "sonde : " & StrP2aNomFichier & " N de serie : " & strP2bNomFichier 'Tout est vide ... les lignes 97, 99 et 101 ne fonctionnent pas
'If (InStr(1, strP2NomFichier, "DGGG", 1) = 0) Then MsgBox "1 - A traiter : " & strP2NomFichier : StrP2aNomFichier = Left(strP2NomFichier,4) AND strP2bNomFichier = Right(strP2NomFichier,4) Else
'If (InStr(1, strP2NomFichier, "DIL", 1) = 0) Then MsgBox "2 - A traiter : " & strP2NomFichier : StrP2aNomFichier = Left(strP2NomFichier,3) AND strP2bNomFichier = Right(strP2NomFichier,4) Else
'If (InStr(1, strP2bNomFichier, "L", 1) = 0) Then MsgBox "2 - A traiter : " & strP2NomFichier : StrP2aNomFichier = Left(strP2NomFichier,3) AND strP2bNomFichier = Right(strP2NomFichier,4)
'DGGG passe à la ligne 122 et renvoie type incompatible string DGG! code 800A00D ....
'MsgBox "2nd partie : " & strP2bNomFichier
'MsgBox "str a traiter : " & strP2NomFichier
'MsgBox "sonde : " & StrP2aNomFichier & " N de serie : " & strP2bNomFichier
Next
'En fin de Sub effacement des variables
End Sub
SUB Las20 (FSO, FolderPath)
MsgBox "Yes ... sub Las20!"
'Utiliser une variable obFolderX pour chaque sub!
End Sub
SUB Di (FSO, FolderPath)
MsgBox "Yes ... Sub Di!"
End Sub
SUB Dt (FSO, FolderPath)
MsgBox "Yes ... Sub Dt!"
End Sub
SUB Gyro (FSO, FolderPath)
MsgBox "Yes ... Sub Gyro!"
'Trouver un moyen simple pour aller dans le sous dossier ....
End Sub |
Partager