Problème code VBS: suppression fichier commençant par

Bonjour,

j'ai un problème qui m'énerve en vbs. En gros je souhaite pouvoir supprimer un fichier pdf dans le même dossier que mon script VB dont le nom commence par"suviclient". Je lui demande en amont de la suppression, de vérifier si ce fichier existe. Il ne le trouve jamais ou ne les trouve jamais donc les fichiers ne se suppriment pas :/ Voci mon code

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim nomfichier : nomfichier = "SuviClient*"
 Dim lieufichier: lieufichier = "D:\PARTAGES_LIMITES\RAPPORTS_filou\Rapports v2\jean-claude\" & nomfichier  

 If fso.FileExists(lieufichier) > 0 Then ' j'ai aussi tester sans le >0

        fso.deletefile lieufichier
        wscript.echo " [OK] Le fichier à été supprimé!"
    Else

        wscript.echo " [  ] Le fichier n'existe pas!"
End If

Set fso = Nothing

Help s'il vous plait

cordialement,

Bonjour

je ne sais si cela fonctionne en VBS mais en VBA oui, il faut utiliser la fonction DIR, cette fonction permet de recuperer le nom du fichier complet en connaissant une partie du nom

Dim nomfichier : nomfichier = "SuviClient"
Dim lieufichier: lieufichier = "D:\PARTAGES_LIMITES\RAPPORTS_filou\Rapports v2\jean-claude\" & nomfichier  

Nom_fichier_complet  = Dir(lieufichier & "*.*")

fred

Merci de ta réponse

Oui je connais en VBA DIR mais j'arrive pas du tout à le retranscrire en vbs

RE

alors peut-etre une idée un peu barbare....

creer un objet de type dossier (getfolder)

et recupérer un a un les noms des fichiers présents dans le dossier, puis faire un left du nombre de caractère qui va bien pour comparer avec le debut de ton nom, faire un suppression du fichier... c'est pas très propre mais je ne vois pas autre chose...

fred


nomfichier = "SuviClient"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("D:\PARTAGES_LIMITES\RAPPORTS_filou\Rapports v2\jean-claude\")
Set colFiles = objFolder.Files
For Each objFile in colFiles
 'Wscript.Echo objFile.Name, objFile.Size
if left(objFile.Name,10) = nomfichier then 
objFile.delete
exit for
end if
Next

Pour quelqu'un qui ne connait pas VBS tu as quand même bien géré.

Ton code fonctionne très bien, entre temps j'avais bidouillé mon code et trouvé une solution également mais le problème avec ton code ou le mien c'est si le fichier existe pas en fait. Et la du coup on retourne au même problème le fso.fileexist qui n'est pas compris. Dans ton code quand le fichier existe pas, rien ne ce passe (ce qui m'inquiète un peu vu qu'il tourne quand même )

dans le mien

Const DeleteReadOnly = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("D:\PARTAGES_LIMITES\RAPPORTS_AX\Rapports commerciaux\jean-claude\*.pdf"), DeleteReadOnly

Message d'erreur si il ne le trouve pas

Mon problème est donc en partie résolu pour l'instant ça va. Mais j'aimerais par la suite optimiser ce code donc si quelqu'un à une idée je suis preneur.

pour savoir si le script a fait quelque chose suffit de mettre un drapeau...

du genre :

drap = 0
nomfichier = "SuviClient"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("D:\PARTAGES_LIMITES\RAPPORTS_filou\Rapports v2\jean-claude\")
Set colFiles = objFolder.Files
For Each objFile in colFiles
 'Wscript.Echo objFile.Name, objFile.Size
if left(objFile.Name,10) = nomfichier then 
objFile.delete
drap = 1
exit for
end if
Next
if drap = 1 then 
Wscript.Echo "fichier" & objFile.Name & "trouvé et supprimer"
else
Wscript.Echo "fichier non trouvé"
end if

En plus j'ai oublié de dire que je voulais mettre "**** suivi" car j'ai suiviclient et suviheure. Bref je vais creuser encore^^

si le nombre de caractère est fixe, manipuler la chaine de caractère avec le left et right

Edit :

ou faire un

nomfichier2 ="suviheure"

et dans le test faire un truc du genre

if left(objFile.Name,10) = nomfichier or (objFile.Name,9) = nomfichier2 then 

fred

J'avais déjà testé créer ma seconde variable. Il me m'indiquait une erreur qui était une erreur de syntaxe .

Mon problème est donc résolu

Mille merci à toi Fred!!!!!

Re

oui en effet il manquait le left... dans la deuxième partie de la ligne du IF.... ma pensé va plus vite que mes mains pour écrire

fred

A ma grande surprise...

j'avais qu'un fichier à chaque fois (de chaque type heure et client)

quand il sont plusieur autrement dit "suviclient de xxxxx"

ça n'en suprime qu'un il faut relancer le script à chaque fois... Tu n'as pas une idée d'ou ça provient :/

si

supprime le : exitfor

fred

Enfait comme j'ai un autre code derrière je pensais nécessaire de mettre le exit for.

Mais c'est vrai qu'il est logique de le supprimer a force de bosser dessus je ne voyais pas ce qui était sous mon nez^^

Je te remercie de ton aide et surtout de ta patience !

Bonne journée

Rechercher des sujets similaires à "probleme code vbs suppression fichier commencant"