Chaine de caractere

famillelescure Messages postés 10 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 15 décembre 2006 - 14 déc. 2006 à 14:47
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 15 déc. 2006 à 13:09
j'ai besoin de recherche dans un repertoire les fichier de moin de 7 jours comportant un caracter precis

Ex: recherche dans le repertoire C:\test
je recherche les fichier de moins de 7 jours comportants la chaine de caracteres X

15 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
14 déc. 2006 à 14:51
Voir les sources et snippets:

_parcourir disque
_attribut fichier
_recherche d'un caractère dans fichier

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
famillelescure Messages postés 10 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 15 décembre 2006
14 déc. 2006 à 14:55
Petite precision cette recherche doit etre en vbscrit
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
14 déc. 2006 à 14:57
Ne met pas réponse accepté, tu n'as pas résolu ton problème encore! Par contre si JMO passe par là, il te fera un joli script comme àson habitude je pense!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
14 déc. 2006 à 15:46
 Bonjour à tous

Merci Drikce06 !!!
J'arrive, je viens juste de finir mon job...
Apparemment, questions récurrentes.
Aller... on va assembler plusieurs bouts de code...

Et julien, qu'est-ce qu'il fait ?

jean-marc
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
14 déc. 2006 à 16:09
Salut JMO!
Derien, c'est juste que tu es le spécialiste du vbscript sur vbfrance!
Ha ça je sais pas, il doit être pris par d'autre topic! lol!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 déc. 2006 à 16:13
Salut  [auteurdetail.aspx?ID= 9517 JMO] Me voila!!!!!!
RE   [auteurdetail.aspx?ID=786090 Drikce06] alors qu'avons nous ici...

[auteurdetail.aspx?ID =193952 famillelescure]Petite précision la chaine de caractere dois se trouve dans le fichier OU dans le NOM du fichier?

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 déc. 2006 à 16:23
Re,
Voici déjà un petit début de code.
Pour le reste on va attendre les précision de notre ami.
Je vais non plus tout faire.... j'ai un travail aussi ... [auteurdetail.aspx?ID= 193952 (famillelescure ]SOIS PRECIS
Dim Fso 
Set Fso =   CreateObject ("Scripting.FileSystemObject") 
Dim Fil  
'Pour chaque Fichier contenu dans le repertoire
For Each Fil In Fso.GetFolder(Repertoire).Files 

'Si c'est la date de modification qui veut dire les fichiers de moins de 7 jour
    ' => toujours etre le plus precis possible
    If Date - Fil.DateLastModified < 7) Then 
        MsgBox Fil.Name 
    End If 
    'Si c'est la date de creéation qui veut dire les fichiers de moins de 7 jour
    '=> toujours etre le plus precis possible
    If Date - Fil.DateCreated < 7) Then 
        MsgBox Fil.Name 
    End If 
Next 

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 déc. 2006 à 16:26
Re,

Mais je viens de voir l'historique des de tes messages [auteurdetail.aspx?ID= 193952 famillelescure ]
Et ce topic  ou [auteurdetail.aspx?ID =9517 JMO] 
t'avais déjà répondu... tu pourrais l'adapter et repondre seul à tes besoin (=> d'ailleurs l'autre poste l'estimes tu résolu ou pas, si oui pense au bouton réponse acceptée la tu as le droit.....)

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
14 déc. 2006 à 16:36
 Re,

Salut julien, no remember de ce post
Simple à adapter.....de toutes façons, les réponses aux 3 questions sont sur le forum et codyx.
Je regarderai ce soir pour y rajouter les subfolders et une recherche.
D'ailleurs, ouvrir le fichier, oui, je veux bien si ça sous-entend un filetextstream (.txt,.vbs, etc ???).
En bin, je n'ai jamais testé.

A+.
jean-marc
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
14 déc. 2006 à 17:41
Aïe! Bon moi je vous laisse chercher, j'ai un poil dans le cerveau! Faite moi signe quand vous aurez la solution! Merci!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
14 déc. 2006 à 21:19
 Re,

J'ai adapté un script qui permettait de modifier la longueur des folders et files.
Un fichier de contrôle est créé dans le path du script.
le script n'est pas trop commenté, mais ça va venir.
Petit clin d'oeil pour l'utilisation du Dictionary.
J'ai testé sur .txt et .vbs

Option Explicit
 
Const RootPath = "d:\test"
Const MonMot = "mon_mot_a_rechercher"
Const Extension = ".txt"



Const ForReading 1, ForWriting 2, ForAppending = 8



Dim Fso, RootFolder, SelectedFiles, SelectedFolders, FicLog 
Set fso = CreateObject("Scripting.FileSystemObject")



If Fso.FolderExists(RootPath) Then
   Set RootFolder = fso.GetFolder(RootPath)
   Set SelectedFiles = CreateObject("Scripting.Dictionary")
   Set SelectedFolders = CreateObject("Scripting.Dictionary")



  'Ce fichier sert à contrôler
   Set FicLog = fso.CreateTextFile(".\fichier_tempry.tmp")
  
   Call SearchFolders(RootFolder)



   WScript.Echo "Le mot  """ & MonMot & """  a été trouvé dans  " & SelectedFiles.Count & "  fichiers"
   Else
   WScript.Echo "repertoire inconnu    " & RootPath 
End if



Set SelectedFiles = Nothing
Set SelectedFolders = Nothing
Set RootFolder = Nothing
Set FicLog = Nothing
Set Fso = Nothing
WScript.Echo "Traitement terminé!"
WScript.Quit




 



Sub SelectFile(ArgFile)
    If UCase(Right(ArgFile,4)) = UCase(Extension) Then
       Dim strListe, fdate, dtDiffFile, oTemp



       If DateDiff("d",ArgFile.DateLastModified ,Date) <7 then
          'MsgBox ArgFile.Name &vbCrLf& ArgFile.DateLastModified
          Call RechercherMot(ArgFile)
       End If



   End If
End Sub



Sub SelectFolder(ArgFolder)
'commandes pour modifier le nom du folder
'Set SelectedFolders(ArgFolder.Path) = ArgFolder
'Call ModifyName(ArgFolder)
End Sub



Sub SearchFolders(ArgFolder)
Dim file, subfolder
For Each file In ArgFolder.Files
Call SelectFile(file)
Next
For Each subfolder In ArgFolder.SubFolders
Call SelectFolder(subfolder)
Call SearchFolders(subfolder)
Next
End Sub



Sub RechercherMot(ArgFile)
Dim objFso
Set objFso = CreateObject("Scripting.FileSystemObject")



If Len(MonMot) > 0 Then
   Dim objFichier, oTable, oLigne 
   Set objFichier = objFso.OpenTextFile(fso.GetParentFolderName(ArgFile) & "" & ArgFile.Name, ForReading)
   oTable = Split(objFichier.ReadAll, MonMot, -1, 1)
 
   If UBound(oTable) <> 0 Then
      'MsgBox ArgFile,,"CONTROLE"
      oLigne = UBound(oTable) & vbTab & " fois dans le fichier """ & ArgFile &"""" &vbTab
      FicLog.WriteLine oLigne &vbTab& ArgFile.DateLastModified
      Set SelectedFiles(ArgFile.Path) = ArgFile
      Else
      Exit Sub
   End If
   objFichier.Close
   Set objFichier = Nothing
End If
Set objFso = Nothing
End Sub





jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
15 déc. 2006 à 08:21
 Bonjour à tous

Correction de 2 erreurs:
- vérif que fichier .txt non vide;
- fermeture du fichier .txt

Sub RechercherMot(ArgFile)
Dim objFso
Set objFso = CreateObject("Scripting.FileSystemObject")



If Len(MonMot) > 0 And ArgFile.Size <> 0 Then
'MsgBox argfile
   Dim objFichier, oTable, oLigne 
   Set objFichier = objFso.OpenTextFile(fso.GetParentFolderName(ArgFile) & "" & ArgFile.Name, ForReading)
   oTable = Split(objFichier.ReadAll, MonMot, -1, 1)
   objFichier.Close
   Set objFichier = Nothing
 
   If UBound(oTable) <> 0 Then
      'MsgBox ArgFile,,"CONTROLE"
      oLigne = UBound(oTable) & vbTab & " fois dans le fichier """ & ArgFile &"""" &vbTab
      FicLog.WriteLine oLigne &vbTab& ArgFile.DateLastModified
      Set SelectedFiles(ArgFile.Path) = ArgFile
      Else
      Exit Sub
   End If
End If
Set objFso = Nothing
End Sub



jean-marc
0
famillelescure Messages postés 10 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 15 décembre 2006
15 déc. 2006 à 09:41
Merci de votre participation mais j'ai trouvé la solution voici le code que j'ai trouvé :

Option Explicit
Dim fso,Dossiers,fic,fichiers,strListe,f,fdate,fname,dtDiffFile,Flux,Path,args,nbjour,cmp,carac
Set args = Wscript.Arguments
Path = args(0)
nbjour = args(1)
carac = args(2)
ShowFolderList(Path)
Function ShowFolderList(strPath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossiers = fso.GetFolder(path)
Set fic = Dossiers.Files
For Each fichiers in fic
Set f = fso.GetFile(fichiers)
fdate = f.DateLastModified
fname = f.Name
dtDiffFile = DateDiff("d", Now, fdate)
If dtDiffFile <= -nbjour Then
If Instr(fname,carac) Then
strListe = strListe & vbcrlf & fname & " " & fdate
fso.DeleteFile(Path & fname)
WScript.Echo("Fichier " & path & fname & " supprimé")
End If
End If
Next
Set fso = Nothing
Set Dossiers = Nothing
Set f = Nothing
End Function
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 déc. 2006 à 09:58
Salut,
Avec une bonnne mise en page... ceci donne.
Option Explicit 
Dim fso, Dossiers, fic, fichiers, strListe 
Dim f, fdate, fname, dtDiffFile, Flux, Path 
Dim args, nbjour, cmp, carac 
Set args =  WScript.Arguments 
Path = args(0) 
nbjour = args(1) 
carac = args(2) 
ShowFolderList (Path) 

Function ShowFolderList(strPath) 
    Set fso =  CreateObject ("Scripting.FileSystemObject") 
    Set Dossiers  = fso.GetFolder(Path) 
    Set fic =  Dossiers.Files 
    For Each fichiers In fic 
        Set f = fso.GetFile(fichiers) 
        fdate = f.DateLastModified 
        fname = f.Name 
        dtDiffFile =  DateDiff ("d", Now, fdate) 
        If dtDiffFile < = -nbjour Then 
            If InStr(fname, carac) Then 
                strListe = strListe & vbCrLf & fname & " " & fdate 
                fso.DeleteFile (Path & fname) 
                WScript.Echo ("Fichier " & Path & fname & " supprimé") 
            End If 
        End If 
    Next 
    Set fso = Nothing 
    Set Dossiers = Nothing 
    Set f = Nothing 
End Function 

Si ton problème est résolu.... REPONSE ACCEPTEE

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
15 déc. 2006 à 13:09
 Bonjour à tous

Salut Julien et Drikce, on en revient toujours au même problème: l'énoncé du topic !!!
Enfin.... ma suggestion peut éventuellement servir pour une recherche plus approfondie.
Mais, je ne suis pas encore "perturbé" (topic de samedi, je crois).

@+.
jean-marc
0
Rejoignez-nous