Chemin et nom de fichier à récupérer ...

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

je reviens sur le forum pour une nouvelle question. Deux en fait ...

Vous risquez de trouver mon travail un peu brouillon ... mais cela fonctionne et je débute. Je verrais un peu plus tard comment l'améliorer .. mais si en plus de mes questions vous avez des idées, je suis preneur!

Le premier point concerne la ligne 36 je crée un fichier. Cela fonctionne bien. Par contre lignes 46 à 50 (et les suivantes pas écrites!) je n'arrive pas à retrouver le nom et le chemin du fichier pour y écrire. comment faire?

Le second concerne la ligne 111. comment retrouver le chemin du fichier crée dans la ligne au-dessus pour en obtenir la taille.

Je vous remercie par avance pour votre aide,
Michel

'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
 
 
   

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
tout un tsoin-tsoin avec FSO pour faire (bien plus simplement ce que te permet de faire l'instruction Open (à lire dans ton aide VB6).
Commence par cela.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
bjr ucfoutu,

et merci pour ta réponse! si j'avais une aide VB6 je la lirais avec plaisir! je suis dans le désert, au Nord du Niger ... donc difficile de trouver à part sur le net. Merci la Vsat.

je n'ai que l'aide VBScript à ma disposition et ne fait du code que depuis 3 jours environs et aucun mentor. donc dur dur pour moi!

De la lecture j'en fait, mais toujours évident de bien comprendre les doc de programmation quand on en a jamais fait

bonne journée à toi
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Désolé, mais l'aide vb6 est normalement sur le CD d'installation de VB6.
Si tu as ces CD, installe-la ! Elle est indispensable (y compris pour les plus avancés d'entre nous).
Si tes CD VB6 sont "tombés d'un camion" ===>>> cherche sur le Net ===>> tu y trouveras de quoi réparer cet "oubli".
Ne compte pas sur moi pour substituer à la vocation de ce forum celle d'un palliatif à l'absence de l'installation de cette aide. Lis ma signature, à ce propos.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ