dachyc
Messages postés15Date d'inscriptionmercredi 27 décembre 2006StatutMembreDernière intervention 9 janvier 2007
-
4 janv. 2007 à 12:16
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 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.
A voir également:
Extraire une partie d'une chaine de caractère python
drikce06
Messages postés2237Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200811 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:
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 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
dachyc
Messages postés15Date d'inscriptionmercredi 27 décembre 2006StatutMembreDerniè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?
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
dachyc
Messages postés15Date d'inscriptionmercredi 27 décembre 2006StatutMembreDerniè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")
dachyc
Messages postés15Date d'inscriptionmercredi 27 décembre 2006StatutMembreDerniè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?
dachyc
Messages postés15Date d'inscriptionmercredi 27 décembre 2006StatutMembreDerniè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
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 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