Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1201 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code marche pas need aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code marche pas need aide

n°2000803
toxyco
Posté le 11-06-2010 à 10:59:58  profilanswer
 

Bonjour,
 
je voudrais que mon programme aille dans c:\QUEUS\cro\rebut et que les fichier qu'il y a dans x il les regarde un par un et supprime les fichiers contenant les mot "na" .
 
 
 
 
Petit code préalable que j'ai fait mais sans succèes j'ai besoin que vous me le conpléter .
Merci d'avance j'espère que vous m'aiderez  
 
 
 

Code :
  1. Dim stRep 'c:\QUEUS\cro\rebut
  2. Dim oFSO,oFl
  3. Set oFSO = CreateObject("Scripting.FileSystemObject" )
  4. stRep = "C:\Tmp"
  5. If oFSO.FolderExists(stRep) Then
  6. For each oFl in  oFSO.GetFolder(stRep).Files
  7.    Wscript.Echo oFl.Name
  8. Next
  9. End If
  10. Const ForReading = 1, ForWriting = 2
  11.   Dim oFso, f
  12.   Set oFso = CreateObject("Scripting.FileSystemObject" )
  13.   Set f = oFso.OpenTextFile("c:\QUEUS\cro\rebut", ForReading)
  14.   Wscript.echo f.ReadAll
  15.   f.Close
  16. pos = InStr(0, "na" )    'renvoie 24
  17. pos = InStr(0,"na)   'renvoie 0
  18. File.Delete("c:\QUEUS\cro\rebut" )
  19. Console.WriteLine("Fichier c:\QUEUS\cro\rebut supprimé" )


 
Coordialement, .Toxyco.
 

mood
Publicité
Posté le 11-06-2010 à 10:59:58  profilanswer
 

n°2000808
olivthill
Posté le 11-06-2010 à 11:11:09  profilanswer
 

C'est du VBS.
Ce code a l'air correct au point de vue de la syntaxe.
 
Pourquoi ça ne marche pas ? A quel endroit ? Où est le problème ?
 
Je devine qu'il faudrait tester si pos est 0 ou non, pour supprimer ou pas le fichier.
 
Si les fichiers contiennent des données binaires, cela ne marchera pas, car vous utilisez OpenTextFile, qui, comme son nom l'indique, ouvre des fichiers "textes", et pas des fichiers "binaires".

n°2000810
toxyco
Posté le 11-06-2010 à 11:12:49  profilanswer
 

Merci pour la reponse. J'ai pas mis en relation supprimer le fichier si la recherche est bonne .

n°2000813
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-06-2010 à 11:17:15  profilanswer
 

Beaucoup de code inutile dans son code :
- lignes 5 à 9 : pourquoi afficher le nom de chaque fichier rencontré dans le répertoire ?
- ligne 12 : pourquoi recréer un second objet FileSystemObject alors qu'il en existe déjà un ?
- lignes 16 et 17 : rien compris... elle est où la chaine dans laquelle les occurences de "na" doivent être recherchées ? et pourquoi 2 lignes (dont une avec une erreur, la 17 : il manque une guillemet fermante)
Et la condition de suppression en cas d'occurence trouvée, elle est où ? Le File.Delete se fait inconditionnellement...
 
Bref, ce code a un gros problème d'algo. Je te suggère de tout refaire sur papier, et de bien séparer les différentes étapes du traitement parce que là, c'est n'importe quoi.


---------------
J'ai un string dans l'array (Paris Hilton)
n°2000814
toxyco
Posté le 11-06-2010 à 11:21:32  profilanswer
 

Je sait pas faire une suppression en cas d'occurence trouvée.

n°2000815
toxyco
Posté le 11-06-2010 à 11:24:06  profilanswer
 

J'ai fait les modification que tu ma dit il en manque quelque une mais je suis pas bon en bvs.  

Code :
  1. Dim stRep 'c:\QUEUS\cro\rebut
  2. Dim oFSO,oFl
  3. Set oFSO = CreateObject("Scripting.FileSystemObject" )
  4. stRep = "C:\Tmp"
  5. End If
  6. Const ForReading = 1, ForWriting = 2
  7.   Dim oFso, f
  8.   Set f = oFso.OpenTextFile("c:\QUEUS\cro\rebut", ForReading)
  9.   Wscript.echo f.ReadAll
  10.   f.Close
  11. pos = InStr(0, "na" )    'renvoie 24
  12. pos = InStr(0,"na" )   'renvoie 0
  13. File.Delete("c:\QUEUS\cro\rebut" )
  14. Console.WriteLine("Fichier c:\QUEUS\cro\rebut supprimé" )


 

n°2000817
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-06-2010 à 11:32:28  profilanswer
 

A quel moment dans ton code tu demandes de supprimer le fichier si celui ci contient les lettres "na" ? Ce n'est pas une question d'être bon en VBS ou pas, mais une question d'algo : à la ligne 13, tu effaces un fichier (rebut), dont on se demande ce qu'il vient faire là (a t'il les lettres "na" dans son nom ? non. Alors pourquoi l'effacer ?). Mais tu n'associes aucune condition à cet effacement.
Reprends tout depuis le début, et décompose les différentes tâches de ton traitement.


---------------
J'ai un string dans l'array (Paris Hilton)
n°2000832
toxyco
Posté le 11-06-2010 à 12:15:52  profilanswer
 

C'est mieux ou pas ?  

Code :
  1. Dim stRep 'c:\QUEUS\cro\rebut
  2. Dim oFSO,oFl
  3. Set oFSO = CreateObject("Scripting.FileSystemObject" )
  4. stRep = "C:\QUEUS\cro\rebut"
  5. End If
  6. Const ForReading = 1, 
  7.   Dim oFso, f
  8.   Set f = oFso.OpenTextFile("c:\QUEUS\cro\rebut", ForReading)
  9.   Wscript.echo f.ReadAll
  10.   f.Close
  11. pos = InStr(0, "na" )    'renvoie 24
  12. pos = InStr(0,"na" )   'renvoie 0
  13. If UCase = "na" then AFile.Delete


Message édité par toxyco le 11-06-2010 à 12:16:24
n°2000833
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-06-2010 à 12:18:11  profilanswer
 

Tu fais n'importe quoi, tu ne déclares rien, tu marches à l'aveuglette... la ligne 13 ne ressemble à rien du tout


---------------
J'ai un string dans l'array (Paris Hilton)
n°2000835
toxyco
Posté le 11-06-2010 à 12:20:01  profilanswer
 

éclaire moi stp ....

mood
Publicité
Posté le 11-06-2010 à 12:20:01  profilanswer
 

n°2000838
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-06-2010 à 12:24:54  profilanswer
 

- UCase est une fonction, et toi tu l'utilises comme variable : http://msdn.microsoft.com/en-us/li [...] S.85).aspx
- AFile, c'est quoi ? Tu ne déclares cette variable nulle part...
- Les lignes 11 et 12 sont identiques et totalement inutiles (le seul truc à garder c'est InStr, qui te permet effectivement de rechercher une occurence d'une chaine dans une autre, mais que tu emploies n'importe comment)
- et j'en passe....


---------------
J'ai un string dans l'array (Paris Hilton)
n°2000889
SuppotDeSa​Tante
Aka dje69r
Posté le 11-06-2010 à 14:28:39  profilanswer
 

Hello
 
Comme le dit Harkonnen, pose ton algorithme calmement.
 
Pas obligé de faire un truc super compliqué. Moi de ce que j'en ai compris, tu veux supprimer les fichiers qui se trouvent dans le dossier <rebut> si leur nom contient "na"
 
C'est tres simple a poser
 
Pour chaque fichier dans <rebut>
    Si "na" est dans le nom alors on supprime le fichier
    Fin si
Suivant
 
Donc ton script en VBS ne devrait pas faire 13 lignes mais 6/7 a tout casser.
Tu prends l'algo ennoncé juste avant, et tu le transcris en VBS. Et si tu as bien declaré tes variables ca roule tout seul.


---------------
Soyez malin, louez entre voisins !
n°2000907
toxyco
Posté le 11-06-2010 à 15:08:47  profilanswer
 

oui mais pour faire sa faut que mon algo contienne  
 
aille dans rebut l'ouvre, le li et recherche dedans et apres suprime si na est dedans sa fait pas 6/7 ligne nn ?

n°2000911
toxyco
Posté le 11-06-2010 à 15:16:42  profilanswer
 

j'i fait sa qui marche il va chercher et ouvre le fichier.  

Code :
  1. Dim stRep
  2. stRep="c:\QUEUS\cro\rebut"
  3. Dim oFSO,oFl
  4. Set oFSO = CreateObject("Scripting.FileSystemObject" )   
  5. If oFSO.FolderExists(stRep) Then   
  6. For each oFl in  oFSO.GetFolder(stRep).Files
  7.    Wscript.Echo oFl.Name
  8. Set WshShell = WScript.CreateObject("WScript.Shell" )
  9. Next
  10. end if

n°2000936
SuppotDeSa​Tante
Aka dje69r
Posté le 11-06-2010 à 15:49:37  profilanswer
 

Déjà si tu ecrivais en français c'est clair que ca aiderait...
 

Citation :

il les regarde un par un et supprime les fichiers contenant les mot "na"

Moi j'avais compris dans le nom du fichier. Rien a voir avec ma remarque du dessus.
 
Declare tes variables sinon en vbs ca tournera pas, mais en gros ca donnerait ca

Code :
  1. Sub test()
  2.     RepertoireSource = "c:\QUEUS\cro\rebut" 'on defini le repertoire source
  3.     Set objFSO = CreateObject("Scripting.FileSystemObject" ) 'creation des objet FSO
  4.     Set objDossier = objFSO.GetFolder(RepertoireSource) 'On recupere le dossier
  5.     If (objDossier.Files.Count > 0) Then 's'il le dossier contient des fichiers
  6.         For Each objFichier In objDossier.Files 'pour chaque fichiers dans le dossier
  7.             Set Txt = objFSO.GetFile(objFichier.Path).OpenAsTextStream(1) 'on ouvre le fichier en lecture
  8.             If Txt.AtEndOfStream = False Then 's'il n'est pas vide (vu qu'on utilise ReadAll
  9.                 If InStr(1, Txt.ReadAll, "na" ) <> 0 Then 'Si le fichier contient "na"
  10.                     Set Txt = Nothing 'On enleve la reference sinon on peut pas supprimer le fichier vu qu'il est ouvert
  11.                     objFSO.deletefile objFichier.Path, True 'on supprime le fichier
  12.                 End If
  13.             End If
  14.         Next
  15.     End If
  16. End Sub

Message cité 2 fois
Message édité par SuppotDeSaTante le 11-06-2010 à 15:50:58

---------------
Soyez malin, louez entre voisins !
n°2000942
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-06-2010 à 15:55:55  profilanswer
 

SuppotDeSaTante a écrit :

Déjà si tu ecrivais en français c'est clair que ca aiderait...

 
Citation :

il les regarde un par un et supprime les fichiers contenant les mot "na"

Moi j'avais compris dans le nom du fichier. Rien a voir avec ma remarque du dessus.

mais bondieu, j'avais compris la même chose [:mlc]


Message édité par Harkonnen le 11-06-2010 à 15:56:18

---------------
J'ai un string dans l'array (Paris Hilton)
n°2001436
toxyco
Posté le 14-06-2010 à 12:03:03  profilanswer
 

Merci de ton aide . j'ai essayer le code il ne supprime pas mais il marche bien et s'exécute .

n°2001481
SuppotDeSa​Tante
Aka dje69r
Posté le 14-06-2010 à 14:59:03  profilanswer
 

Poste ton code ;)


---------------
Soyez malin, louez entre voisins !
n°2001497
toxyco
Posté le 14-06-2010 à 15:26:23  profilanswer
 

Code :
  1. Sub test()
  2.     RepertoireSource = "c:\QUEUS\cro\rebut"
  3.     Set objFSO = CreateObject("Scripting.FileSystemObject" )
  4.     Set objDossier = objFSO.GetFolder(RepertoireSource)
  5.     If (objDossier.Files.Count > 0) Then
  6.         For Each objFichier In objDossier.Files
  7.             Set Txt = objFSO.GetFile(objFichier.Path).OpenAsTextStream(1)
  8.               If Txt.AtEndOfStream = False Then
  9.                 If InStr(1, Txt.ReadAll, "na" ) <> 0 Then
  10.                     Set Txt = Nothing
  11.                     objFSO.deletefile objFichier.Path, True
  12.                 End If
  13.             End If
  14.         Next
  15.     End If
  16. End Sub
  17. wscript.echo "FIN"

n°2001528
SuppotDeSa​Tante
Aka dje69r
Posté le 14-06-2010 à 16:31:54  profilanswer
 

SuppotDeSaTante a écrit :

Declare tes variables sinon en vbs ca tournera pas, mais en gros ca donnerait ca


 
Je suis de bonne humeur et tu as l'air d'en chier :
Tu colles ca dans un fichier .vbs

Code :
  1. Dim RepertoireSource,objFSO,objDossier,Txt
  2.     RepertoireSource = "c:\QUEUS\cro\rebut"
  3.     Set objFSO = CreateObject("Scripting.FileSystemObject" )
  4.     Set objDossier = objFSO.GetFolder(RepertoireSource)
  5.     If (objDossier.Files.Count > 0) Then
  6.         For Each objFichier In objDossier.Files
  7.             Set Txt = objFSO.GetFile(objFichier.Path).OpenAsTextStream(1)
  8.               If Txt.AtEndOfStream = False Then
  9.                 If InStr(1, Txt.ReadAll, "na" ) <> 0 Then
  10.                     Set Txt = Nothing
  11.                     objFSO.deletefile objFichier.Path, True
  12.                 End If
  13.             End If
  14.         Next
  15.     End If
  16.     msgbox "Fin"


Message édité par SuppotDeSaTante le 14-06-2010 à 16:36:29

---------------
Soyez malin, louez entre voisins !
n°2001641
toxyco
Posté le 15-06-2010 à 09:02:55  profilanswer
 

Merci beacoup .... = )

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code marche pas need aide

 

Sujets relatifs
Problème code PHP insertion données form dans DBCode javascript ne fonctionne pas sur firefox
ereg... Presque bon... besoin d'aide SVPEst ce que ce bout de code génère une allocation ?
Besoin d'aide en Cvba html code source
Aide pour un slideshow (flash surement) avec changement backgroundTransformer un code hors ligne en mode en ligne
Problème dans les code HTML et CSS 
Plus de sujets relatifs à : Code marche pas need aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR