Bonjour, je veux ouvrir un fichier txt. Je ne connais que le début du nom du fichier. Exemple : Test****.txt. Merci pour vos réponses.
Bonjour, je veux ouvrir un fichier txt. Je ne connais que le début du nom du fichier. Exemple : Test****.txt. Merci pour vos réponses.
Bonjour
As-tu consulté la FAQ VBScript dont le lien est en haut de cette page ?
Par exemple en Comment lister les fichiers d'un dossier ?, tu peux interroger le début du nom (fonction left) pour sélectionner le fichier que tu souhaites.
Voilà un approche possible.
Philippe
Bonjour Philippe, merci pour le lien mais j'ai déjà regarder et ça ne m'inspire pas trop.
Pour info, je commence un nouveau job et j'ai pas mal de manip à faire sur des fichiers et je cherche à automatiser tout ça.
J'ai besoin d'ouvrir des fichiers txt qui changent tous les jours de nom. exemple : test20121208 (testAnnéeMoisJour)et je débute en vbs.
Merci pour ton retour.
Cordialement, Bruno
Est-ce pour la modification(par le script) ou pour la lecture avec le programme associé ?je veux ouvrir un fichier txt. Je ne connais que le début du nom du fichier
Si c'est ce dernier cas, essaie ce
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Option Explicit Dim FSO, oFolder, Fich, WS, AssocApp, objFile, strCommand, Cnt Const Key = "HKEY_CLASSES_ROOT\txtfile\shell\open\command\" Set FSO = CreateObject("Scripting.FileSystemObject") Set WS = CreateObject("WScript.Shell") Set oFolder = FSO.GetFolder("C:\Temp") AssocApp = WS.RegRead(Key) ' Lecture du programme associé à partir du registre AssocApp = Left(AssocApp, Len(AssocApp)-2) ' Pour enlever le %1 strCommand = AssocApp & " " Cnt = 0 For Each Fich In oFolder.Files If Ucase(Right(Fich.Name, 4)) = ".TXT" Then ' On s'assure de l'extension du fichier If Ucase(Left(Fich.Name, 4)) = "TEST" Then 'On vérifie le début du nom Cnt = Cnt + 1 WS.Run strCommand & Fich.Path, 1, True ' On ouvre le fichier avec le programme associé ' Tant que l'un des fichiers est ouvert, les autres sont en attente End If End If Next If Cnt = 0 Then MsgBox "Aucun fichier n'a été trouvé."
Ne pas oublier le tag
si satisfait.
Voter pour toute réponse satisfaisante avec
pour encourager les intervenants.
Balises CODE indispensables. Regardez ICI
Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
Vous pouvez consulter mes contributions
Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
Merci monsieur l_autodidacte, ça fonctionne super. J'ouvre le fichier pour modification(par le script), par exemple les valeurs OK par KO sur plusieurs lignes du fichier. Ton code peut-il faire cette modification ? Merci encore.
Désolé, merci pour l'info. Pouvez-vous me modifier votre code pour une modification par le script des données dans le fichier. Valeur A par B. Merci d'avance.
Oui en le modifiant ainsi :Les modifications sont inscrites dans le fichier avant son ouverture par le programme associé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Option Explicit Dim FSO, oFolder, Fich, WS, AssocApp, objFile, strCommand, Cnt Const Key = "HKEY_CLASSES_ROOT\txtfile\shell\open\command\", ForReading = 1, ForWriting = 2 Set FSO = CreateObject("Scripting.FileSystemObject") Set WS = CreateObject("WScript.Shell") Set oFolder = FSO.GetFolder("C:\Temp") AssocApp = WS.RegRead(Key) ' Lecture du programme associé à partir du registre AssocApp = Left(AssocApp, Len(AssocApp)-2) ' Pour enlever le %1 strCommand = AssocApp & " " Cnt = 0 For Each Fich In oFolder.Files If Ucase(Right(Fich.Name, 4)) = ".TXT" Then ' On s'assure de l'extension du fichier If Ucase(Left(Fich.Name, 4)) = "TEST" Then 'On vérifie le début du nom Cnt = Cnt + 1 ModifFichier Fich.Path WS.Run strCommand & Fich.Path, 1, True ' On ouvre le fichier avec le programme associé End If End If Next If Cnt = 0 Then MsgBox "Aucun fichier n'a été trouvé." Sub ModifFichier(strFile) Dim ts,Ret Set ts = fso.OpenTextFile(strFile, ForReading, False) Ret = Replace(ts.ReadAll,"OK","KO") ' C'est ici que se fait la modification ts.Close Set ts = fso.OpenTextFile(strFile, ForWriting, False) ts.Write Ret ts.Close End Sub
Ne pas oublier le tag
si satisfait.
Voter pour toute réponse satisfaisante avec
pour encourager les intervenants.
Balises CODE indispensables. Regardez ICI
Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
Vous pouvez consulter mes contributions
Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
ça fonctionne à merveille. Encore un Grand Merci. De bonnes fêtes de fin d'année. Cordialement
Bonjour à tous, j'ai utilisé le script de monsieur l_autodidacte qui fonctionne super. J'ai essayé de le modifier pour l'adapter à des fichiers csv mais pas réussi. Je dois ouvrir le fichier pour modification(par le script), par exemple modifier les valeurs OK par KO sur plusieurs lignes du fichier. Le problème est que le nom comporte des "_". Exemple : A_B_C_aaaa_mm_jj.csv. La date change tous les jours. Merci pour votre aide. Cordialement.
Partager