Extraire des caracteres d'une chaine

dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007 - 4 janv. 2007 à 12:16
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 9 janv. 2007 à 15:01
Bonjour,

Je suis débutante en VB et je n'y comprends pas grand chose.
Mais j'ai un répertoire dans lequel se trouve un nom de fichier de style xxx_yyy_AAMMJJHHMMSS.DAT
j'aurais besoin de recuperer dans une variable les caracteres AAMMJJHHMMSS pour les utiliser dans un .bat
Merci d'avance pour votre aide.

30 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 janv. 2007 à 13:23
Salut, si JMO passe par là (le spécialiste du vbs), il saura t'apporter la solution! Ou sinon reposte plus tard dans la catégorie vbs, il aura plus de chance de voir ton topic!

 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
8 janv. 2007 à 15:23
 Bonjour à tous

Un petit bonjour à 786090 Drikce06, Renfield, jmfmarques....

J'ai fait au + simple, en partant du principe que le fichier, recherché, existe.

Option Explicit
Const Path = "D:\Test"
Dim Fso, Dossier, Fichier, Fichiers       
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = Fso.GetFolder(Path)
Set Fichiers = Dossier.Files
For Each Fichier in Fichiers
If Left(Fichier.Name, 14 ) = "kilpro_racine_" And _
   UCase(Fso.GetExtensionName(Fichier.Path)) = "DAT" Then 
  
   MsgBox "le fichier existe: " &vbCrLf& Fichier &vbCrLf&_
          Left(Fichier, InStrRev(Fichier, "_")) &vbCrLf&_
          "partie date du fichier " & Mid(Fichier.Name,15,12)
End If
Next

jean-marc
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
8 janv. 2007 à 15:57
OK cool, ca marche et ca a l'air de faire ce que je veux
a un detail pret, comment fait on pour que le resultat de Mid... soit dans une variable afin de le reutiliser par la suite
une autre question, puis remplacer le MsgBox par un Wscript.echo?

un grand merci deja pour ce que tu as fait
carine
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
8 janv. 2007 à 16:18
Re,

dachyc, bon courage....on ne m'avait pas encore fait le coup de la variable à la place d'un msgbox !!!

Option Explicit
Const Path = "D:\Mes_scripts_VBFrance"
Dim Fso, Dossier, Fichier, Fichiers, MaDate     
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = Fso.GetFolder(Path)
Set Fichiers = Dossier.Files
For Each Fichier in Fichiers
If Left(Fichier.Name, 14 ) = "kilpro_racine_" And _
   UCase(Fso.GetExtensionName(Fichier.Path)) = "DAT" Then 
   MaDate = Mid(Fichier.Name,15,12)
End If
Next
Set Fso = Nothing
Set Dossier = Nothing
Set Fichiers = Nothing

WScript.Echo MaDate

jean-marc
0

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

Posez votre question
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 10:57
Merci pour ton script, il marche nickel


je me suis permise de le modifier afin d'appeler mon .bat qui va réutiliser la variable MaDate


Mais lorsque je le lance, il dit qu'il ne trouve pas mon .bat alors qu'il est bien créé :(


Voici ce que j'ai modifié


Option Explicit
Const Path = "D:\temp\test"
Dim Fso, Dossier, Fichier, Fichiers, MaDate , WshShell    
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = Fso.GetFolder(Path)
Set Fichiers = Dossier.Files
For Each Fichier in Fichiers
If Left(Fichier.Name, 14 ) = "kilpro_racine_" And _
   UCase(Fso.GetExtensionName(Fichier.Path)) = "DAT" Then
   MaDate = Mid(Fichier.Name,15,12)
End If
Next
Set Fso = Nothing
Set Dossier = Nothing
Set Fichiers = Nothing
Set WshShell=Wscript.CreateObject("wscript.shell")


WScript.Echo MaDate


Return=WshShell.run("D:\temp\test\test.bat" & MaDate )
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 janv. 2007 à 11:39
Fait un msgbox et tu vas comprendre pourquoi !

Msgbox "D:\temp\test\test.bat" & MaDate
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 11:48
j'ai fait un msgbox, et j'ai vu ce qu'il se passait
il s'ajoute la vouelur de la variable derriere le .bat et cherchez donc un fichier test.bat MaDate qui effectivement n'existe pas :(
c bien possible de lancer un .bat a partir d'un vbs en reprenant la variable MaDate ainsi que sa valeur?
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
9 janv. 2007 à 11:54
Return=WshShell.run("D:\temp\test\test" & MaDate & ".bat" )

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 12:06
merci, mais ca fait pas encore ce que j'aimerais
j'aimerais bien lancer un .bat qui se nomme test.bat et a l'interieur de ce .bat récuperer la valeur de ma variable MaDate
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 janv. 2007 à 15:01
 Bonjour à tous,

Dans ton script .vbs, tu peux créer ton .bat et le lancer.
Exemple trouvé et, donc, à adapter.
varArg1 est une variable (un argument) passé au .bat
varArg1 peut venir d'un autre script (search WScript.Arguments sur Google)

'************ récupère le répertoire courant
VarRepCourant=GetPath()
'************ crée le batchConst ForReading 1, ForWriting 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(VarRepCourant & "var.bat", ForWriting,true)
file.WriteLine("Set VarSelctn=" & """" & VarSelctn & """")
file.WriteLine("Set " & varArg1 & "=" & varArg2)
file.WriteLine("Pause")
file.WriteLine("SET")
file.WriteLine("Pause")
file.Close
set file=nothing
set fso=nothing
'************ execute le batch
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("""" & VarRepCourant & "var.bat" & """")
Set WshShell = Nothing
Wscript.quit
'************ fin du script
'********************************************************
'       Fonctions et modules
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Récupère le répertoire courant
Function GetPath()
 Dim path
 path = WScript.ScriptFullName
'On ne garde que ce qui est à gauche du dernier slash (compris)
 GetPath = Left(path, InStrRev(path, ""))
End Function

Là, je dis peut-être des inepties (j'en suis presque sur), mais si tu veux lancer un bat à partir d'un vbs,
il faut que le .bat comprenne qu'il doit accepter des arguments.
c'est donc plus facile que ton vbs créé et active ton bat (avec ou sans args)

J'en profite pour dire bonjour et remercier jmfmarques pour hier soir (en fait, j'ai retrouvé mon script de test).
.jean-marc
0
Rejoignez-nous