[VBS] Correction d'un script
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonsoir à tous,
j'ai besoin de votre soutient pour établir un script VBS. Je souhaite que le programme recherche dans les fichiers appartenant à un dossier une chaine de caractères demandées à l'utilisateur.
J'ai déjà fait un début mais le programme lit les fichiers lignes par lignes ; la chaine de caractères doit correspondre à une ligne entière or moi je veux qu'elle puisse êtreque dans une partie.
j'espère avoir été un minimum explicite :)
Voici déjà mon code :
dim dossier,recherche
dossier=inputbox("Dans quel dossier chercher ?","Sélection du dossier")
recherche=inputbox("Quelle recherche à effectuer ?","Sélection de la recherche")
Dim arrFileLines()
Dim stRep
Dim oFSO,oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
stRep = "C:\DNC30\DNC30BER\" & dossier
If oFSO.FolderExists(stRep) Then
For each oFl in oFSO.GetFolder(stRep).Files
i = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(oFl, 1)
Do Until objFile.AtEndOfStream
Redim Preserve arrFileLines(i)
arrFileLines(i) = objFile.ReadLine
i = i + 1
Loop
objFile.Close
For l = Lbound(arrFileLines) to UBound(arrFileLines)
if instr(recherche,arrFileLines(l)) then msgbox oFl
Next
Next
End If
Merci de votre aide.
j'ai besoin de votre soutient pour établir un script VBS. Je souhaite que le programme recherche dans les fichiers appartenant à un dossier une chaine de caractères demandées à l'utilisateur.
J'ai déjà fait un début mais le programme lit les fichiers lignes par lignes ; la chaine de caractères doit correspondre à une ligne entière or moi je veux qu'elle puisse êtreque dans une partie.
j'espère avoir été un minimum explicite :)
Voici déjà mon code :
dim dossier,recherche
dossier=inputbox("Dans quel dossier chercher ?","Sélection du dossier")
recherche=inputbox("Quelle recherche à effectuer ?","Sélection de la recherche")
Dim arrFileLines()
Dim stRep
Dim oFSO,oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
stRep = "C:\DNC30\DNC30BER\" & dossier
If oFSO.FolderExists(stRep) Then
For each oFl in oFSO.GetFolder(stRep).Files
i = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(oFl, 1)
Do Until objFile.AtEndOfStream
Redim Preserve arrFileLines(i)
arrFileLines(i) = objFile.ReadLine
i = i + 1
Loop
objFile.Close
For l = Lbound(arrFileLines) to UBound(arrFileLines)
if instr(recherche,arrFileLines(l)) then msgbox oFl
Next
Next
End If
Merci de votre aide.
A voir également:
- [VBS] Correction d'un script
- Script vidéo youtube - Guide
- Vbs windows - Accueil - Optimisation
- Activer correction automatique android - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
7 réponses
Bonjour,
cette ligne :
if instr(recherche,arrFileLines(l)) then msgbox oFl
devrait s'écrire :
if instr(1,arrFileLines(l),recherche,1) then msgbox oFl
Lupin
cette ligne :
if instr(recherche,arrFileLines(l)) then msgbox oFl
devrait s'écrire :
if instr(1,arrFileLines(l),recherche,1) then msgbox oFl
Lupin
Merci beaucoup à toi.
Encore un petit truc: tu a du remarquer qu'à la fin le nom des fichiers dans lesquels apparait la chaine de caractères s'affiche dans une boite de message... . Mais mle problème est que si la chaine est trouvées dans 10 fichiers (par exemple) j'aurai 10 boites de messages avec le même résultat.
Est-ce qu'il y a moyen de n'en mettre qu'une seule s'il te plait ??
Encore un petit truc: tu a du remarquer qu'à la fin le nom des fichiers dans lesquels apparait la chaine de caractères s'affiche dans une boite de message... . Mais mle problème est que si la chaine est trouvées dans 10 fichiers (par exemple) j'aurai 10 boites de messages avec le même résultat.
Est-ce qu'il y a moyen de n'en mettre qu'une seule s'il te plait ??
Bonjour,
Je me suis permis de modifier légèrement votre script :
Je me suis permis de modifier légèrement votre script :
Dim Dossier, Recherche, Reponse Dim arrFileLines(), stRep, oFSO, oFl, objFSO, objFile Dim i,l Dossier = Inputbox("Dans quel dossier chercher ?","Sélection du dossier") Recherche = Inputbox("Quelle recherche à effectuer ?","Sélection de la recherche") Reponse = "" If ( Dossier <> "") Then If ( Recherche <> "" ) Then Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = Dossier If oFSO.FolderExists(stRep) Then For each oFl in oFSO.GetFolder(stRep).Files i = 0 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(oFl, 1) Do Until objFile.AtEndOfStream Redim Preserve arrFileLines(i) arrFileLines(i) = objFile.ReadLine i = i + 1 Loop objFile.Close For l = Lbound(arrFileLines) to UBound(arrFileLines) if instr(1,arrFileLines(l),Recherche,1) then Reponse = Reponse & VbCrLf & oFl.Name End If Next Next End If End If End If Set oFSO = Nothing Set objFile = Nothing Set objFSO = Nothing WScript.Echo Reponse WScript.Quit(0) '
Merci bien une fois de plus. Reste encore un détail (après je t'embête plus :) ): si la chaine se trouve plusieurs fois dans le même fichier, alors j'ai plusieurs fois le nom de ce fichier dans la boite de message finale. Comment faire pour ne l'afficher qu'une seule fois s'il te plait ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re:
suggestion :
Lupin
suggestion :
'--------------------------------------------------------------------------------------------------- ' Dim Dossier, Recherche, Reponse, Drapeau Dim arrFileLines(), stRep, oFSO, oFl, objFSO, objFile Dim i,l Dossier = Inputbox("Dans quel dossier chercher ?","Sélection du dossier") Recherche = Inputbox("Quelle recherche à effectuer ?","Sélection de la recherche") Reponse = "" If ( Dossier <> "") Then If ( Recherche <> "" ) Then Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = Dossier If oFSO.FolderExists(stRep) Then For each oFl in oFSO.GetFolder(stRep).Files i = 0 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(oFl, 1) Do Until objFile.AtEndOfStream Redim Preserve arrFileLines(i) arrFileLines(i) = objFile.ReadLine i = i + 1 Loop objFile.Close Drapeau = False For l = Lbound(arrFileLines) to UBound(arrFileLines) if instr(1,arrFileLines(l),Recherche,1) then Drapeau = True End If Next If (Drapeau) Then Reponse = Reponse & VbCrLf & oFl.Name Drapeau = False End If Next End If End If End If Set oFSO = Nothing Set objFile = Nothing Set objFSO = Nothing WScript.Echo Reponse WScript.Quit(0) '
Lupin