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 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| 'Get Application object of the Windows shell.
Set objShell = WScript.CreateObject("Shell.Application")
'Ask the user to select a folder
Set obFolder = objShell.BrowseForFolder (&H0&, "Select the folder to process", &H1&) 'les &H0& et &H1& sont obligatoirs pour la ligne 13
Wscript.Echo obFolder 'réponse ok, medonne le nom du bon répertoire .... 1 PathFichier ajoute le chemin complet
Set FSO = CreateObject("Scripting.FileSystemObject")
PathFichier = FSO.GetParentFolderName(wscript.ScriptFullName) & "\" & PathFichier
'Wscript.echo "le chemin est :" & PathFichier 'me donne le bon chemin - la ou se trouve le Script et le fichier Last Date Processing.txt...!!! OK
'Ici il faut vérifier l'existance du fichier Date Last Processing
'S'il n'existe pas le créer et le laisser vide
'A faire!
'Trouve la taille du répertoire avant process
PathRep = obFolder.ParentFolder.ParseName(obFolder.Title).Path
'wscript.echo "le chemin est :" & PathRep ' Debug ok
Set RepTrav = FSO.GetFolder(PathRep)
TailleAvant = RepTrav.Size
Wscript.echo "Taille du répertoire =" & TailleAvant ' Debug ok
'ici il faut créer un fichier dans le repertoir du Script.
'le nom est la date d'execussion (AAAAMMJJ-HHMMSS) plus nom du répertoir "racine"
'Il va contenir sur le premiére ligne la taille de départ du répertoir
'la taille du repertoir en fin de process (seconde ligne)
'puis les nom des fichier modifié avec taille avant et taille après
Maintenant = Now
'Wscript.echo Now ' Debug ok
DateTitre = Mid(Maintenant, 7, 4) & Mid(Maintenant, 4, 2) & Left(Maintenant, 2) & " - " & Mid(Maintenant, 12, 2) & Mid(Maintenant, 15, 2) & Right(Maintenant, 2)
'Wscript.echo DateTitre ' Debug ok
'Comment récupérer le nom du fichier crée ci-dessous ligne 35 pour écrire dedans ligne 49 et suivantes
Set FichierExecussion = FSO.CreateTextFile(PathFichier & DateTitre & " Réduction de " & obFolder & ".txt") ' Debug ok fichier crée
'NonFichier = ????
'Wscript.Echo NomFichier
'Déclaration des constantes pour lecture écriture du fichier
'On devrait pouvooir utilser ForWriting à la place de ForAppending)
Const ForWriting = 2
Const ForReading = 1
Const ForReading = 1
Const ForAppending = 8
'comment donner le nom et le chemin du fichier crée !!!!
'Wscript.echo PathFichier ' Debug ok ponte vers les rep du script
'Set f = fso.OpenTextFile(PathFichier & nomfichier, ForAppending, TRUE)
'f.write "début d'execussion :" & Maintenant
'f.write "taille avant réduction :" & TailleAvant
'Recherche de la dernière ligne du fichier
Set f = FSO.OpenTextFile(PathFichier & "Last Date Processing.txt", ForReading, True) 'on ne crée pas de nouveau fichier, si omis pas de nouveau fichier
do Until f.AtEndOfStream = True
LastDate = f.readLine ()
Loop
'Wscript.echo "Date lue :" & LasteDate 'me retourne bien la dernière date lue dans le fichier
'transforme la date et l'heure en nombre : AAAAMMJJ et HHMMSS
JourNum = Mid(LastDate, 7, 4) & Mid(LastDate, 4, 2) & Left(LastDate, 2)
'Wscript.echo "JourNum =" & JourNum ' Debug ok
HeureNum = Mid(LastDate, 12, 2) & Mid(LastDate, 15, 2) & Right(LastDate, 2)
'Start WellCAD
Set WCAD = CreateObject("WellCAD.Application")
WCAD.ShowWindow()
'SaveAs les ancien fichier avec _XX à la fin
ProcessFolder WCAD, FSO, obFolder.self.Path
Sub ProcessFolder(WCAD, FSO, FolderPath) 'supression de PATH
'Get access to the folder
Set obFolder = FSO.GetFolder(FolderPath)
For Each obFile In obFolder.Files
'Check if it is a WCL file containing diagraphie in its name
If (StrComp(Right(obFile.Name, 3), "wcl", 1) = 0) AND _
(InStr(1, obFile.Name, "_xx", 1) = 0) THEN
Set M_file = FSO.GetFile(obfile)
LastMod = M_file.DateLastModified
'Wscript.echo LastMod ' Debug ok me donne la date de dernière modif du fichier
'transforme la date et l'heure en nombre : AAAAMMJJ et HHMMSS
JourLastMod = Mid(LastMod, 7, 4) & Mid(LastMod, 4, 2) & Left(LastMod, 2)
'Wscript.echo "Jour LastMod =" & JourLastMod ' Debug ok
HeureLastMod = Mid(LastMod, 12, 2) & Mid(LastMod, 15, 2) & Right(LastMod, 2)
'Wscript.echo "HeureNum =" & HeureLastMod ' Debug ok
If JourNum <= JourLastMod And HeureNum < HeurelastMod Then
Set Fichier = obfile
'Wscript.echo "nom fichier :" & Fichier ' Debug ok me retourne le nom et le chemin du fichier
Set FichierWCL = FSO.GetFile(Fichier)
FichierTailleAvant = FichierWCL.Size
'Wscript.echo "Taille avant :" & FichierTailleAvant ' debug ok, me donne la taille du fichier
Set obBHDoc = WCAD.OpenBorehole(obFile.Path)
'SaveAs the WCL file
obBHDoc.SaveAs Left(obFile.Path, Len(obFile.Path) - 4) & "_xx" & Right(obFile.Path, 4)
'Comment obtenir le non et le chemin du fichier crée pour en sortir la taille
Set obBHDoc = Nothing
WCAD.CloseBorehole FALSE
End If
End If
Next
'Loop on all the subfolders and process each of them
For Each obSubFolder In obFolder.SubFolders
ProcessFolder WCAD, FSO, obSubFolder.Path 'supression de PATH
Next
End Sub
'ceci doit se trouver en fin de script....
'Get systeme date and time et écrit la date et l'heure de fin du script
FinProcess = Now 'date est heure actuels
'Wscript.echo "Date et heure système :" & FinProcess
'Write syteme date and time in file Last Date Processing.txt
Wscript.echo PathFichier
Set f = fso.OpenTextFile(PathFichier & "Last Date Processing.txt", ForAppending, TRUE)
f.write (FinProcess) & VbCrlf ' Debug ok C'est tout bon!
'Récupére la taille du répertoire de travail en fin de traitement
'PathRep = obFolder.ParentFolder.ParseName(obFolder.Title).Path
'wscript.echo "le chemin est :" & PathRep ' Debug ok
'Set RepTrav = FSO.GetFolder(PathRep)
'PathRep = obFolder.ParentFolder.ParseName(obFolder.Title).Path
'Set RepTrav = FSO.GetFolder(PathRep)
TailleApres = RepTrav.Size
Wscript.echo "Taille du répertoire =" & TailleApres |
Partager