Comment fournir un chemin variable à DeleteFile

Résolu
topor132 - 15 oct. 2012 à 12:57
 topor132 - 15 oct. 2012 à 13:59
Bonjour,
je suis un débutant, isolé à Arlit dans le Nord Niger ou je travail pour le moment. Donc sans autre ressources que le Net, ce qui est déjà pas mal!!!!
Ce n'est sans doute pas le meilleur lieux pour poser ma question puisqu'elle concerne un script ... mais je coince sur la partie proprement VB, du moins il me semble.
Je suis sous Win7 (64bits) et je cherche à développer des script pour l'automatisation de WellCAD, un programme que j'utilise tous les jours.
Après avoir écrit un petit script qui me donne de nouveaux fichier, je cherche à en faire un autre qui me permet d'effacer les anciens (originaux) en fonction de leur nom (avant de réunir les deux ... puis le troisième qui va renommer les nouveaux avec l'ancien nom).
Je bute à la ligne 43 de mon script. La, impossible d'effacer le fichier. Réponse : Fichier introuvable ... code erreur 800A0035.
Je ne trouve pas comment donner le chemin de mon fichier ... de manière à pouvoir l'effacer.
Merci d'avance pour votre aide.
Topor

'Get Application object of the Windows shell.
Set objShell = WScript.CreateObject("Shell.Application")

'Ask the user to select a folder
Set obFolder = objShell.BrowseForFolder (0, "Select the folder to process", 1)


If NOT obFolder IS Nothing Then

'Get access to input folder and process it
Set FSO = CreateObject("Scripting.FileSystemObject")
'récupère dans PATH le "chemin" du fichier
'PATH = FSO.GetParentFolderName(wscript.ScriptFullName) & ""

'Suprime les anciens fichiers sans _XX à la fin
DeleteOldFiles FSO, obFolder.self.Path ',PATH


MsgBox "Finished"

Else

MsgBox "Canceled"

End If

'Suprime les anciens fichiers sans _XX à la fin
Sub DeleteOldFiles (FSO, FolderPath) ', PATH)

'Get access to the folder
Set obFolder = FSO.GetFolder(FolderPath)

'Loop on all the files and process each of them
For Each obFile In obFolder.Files

If (StrComp(Right(obFile.Name, 3), "wcl", 1) = 0) AND _
   (InStr(1, obFile.Name, "diagraphie", 1) > 0) AND _
   (InStr(1, obFile.Name, "_xx", 1) = 0) Then
    Wscript.echo obFile.name 'donne le bon nom de fichier
Wscript.echo obFolder 'donne le bon chemin mais sans le \ à la fin


FSO.Deletefile(obfile.name) 'réponse : Fichier introuvable ... code erreur 800A0035
'ici je crois qu'il me manque qq chose
'pour donner le chemin du fichier ... mais je ne trouve pas comment faire ....
'et ce répertoire varie pendant le déroulement du script
'Faut-il utiliser PATH, si oui comment?

End If

Next

'Loop on all the subfolders and process each of them
For Each obSubFolder In obFolder.SubFolders
DeleteOldfiles FSO, obSubFolder.Path ',PATH
Next

End Sub		   

2 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
15 oct. 2012 à 13:23
Bonjour,

As-tu essayé de concaténer les chaines ?
obFolder & "" & obFile.name

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
3
Bonjour Henry

Merci pour ta réponse. J'ai trouvé, ... sur http://www.developpez.net.

Il faut mettre obfile.path et non pas obfile.name

Cela fonction très bien.

encore merci.

Michel
0
Rejoignez-nous