récupérer chaine dans fichier txt

récupérer chaine dans fichier txt - VB/VBA/VBS - Programmation

Marsh Posté le 09-06-2005 à 13:09:05    

hello,tt d'abord dsl si la rep a ma question est déjà postée mais je ne l'ai pas vu et faut dire que je dois vite trouver une reponse (manque de temps)
mn prob est tt simple:
je dispose d'un fichier txt contentant la liste de ts les pc du réseau parmi d'autres info et je dois récupérer le nom de ces machines (PC1,PC2) par grp de 256 dans un autre fichier txt.
(256 car après je traite ces pc avec MBSA qui n'autorise que 256 hotes d'analyse par fichier txt)
n'ayant plus pratiqué de VB depuis un moment, quelqu'un aurait-il déjà ce code?
 
format du fichier txt :
 
netDomBlabla
blabala
 
Member    1 = \\PC1
Member    2 = \\PC2
.........
 
Merci d'avance
Cradle

Reply

Marsh Posté le 09-06-2005 à 13:09:05   

Reply

Marsh Posté le 09-06-2005 à 14:12:45    

cradle6661 a écrit :

hello,tt d'abord dsl si la rep a ma question est déjà postée mais je ne l'ai pas vu et faut dire que je dois vite trouver une reponse (manque de temps)
mn prob est tt simple:
je dispose d'un fichier txt contentant la liste de ts les pc du réseau parmi d'autres info et je dois récupérer le nom de ces machines (PC1,PC2) par grp de 256 dans un autre fichier txt.
(256 car après je traite ces pc avec MBSA qui n'autorise que 256 hotes d'analyse par fichier txt)
n'ayant plus pratiqué de VB depuis un moment, quelqu'un aurait-il déjà ce code?
 
format du fichier txt :
 
netDomBlabla
blabala
 
Member    1 = \\PC1
Member    2 = \\PC2
.........
 
Merci d'avance
Cradle


Salut,
 
On n'a pas pour habitude de donner du code tout fait :)
D'ailleurs on apprend mieux en cherchant par soi-même non?
 
Néanmoins, je vais te donner quelques pistes. Dans l'idée, tu dois ouvrir ton premier fichier txt en lecture (ou en TextStream) et l'autre fichier en écriture.  
Ensuite, tu lis les lignes de ton premier fichier en cherchant une chaîne de caractère t'indiquant que tu vas tomber sur un nom de PC. A partir de là, tu extraits de la ligne le nom du PC et tu l'écris dans l'autre fichier.
 
A la fin du programme tu fermes les deux fichiers et le tour est joué.
 
Je pense, montre en main, qu'avec l'aide en-ligne de VB il ne te faudra pas plus d'1/2h pour coder ce programme!
 
A+

Reply

Marsh Posté le 10-06-2005 à 09:15:08    

als voici ma partie de code :
 
'-----------------------------------
'fonction qui ouvre le fichier members
Private Sub Command1_Click()  
Dim monFichier , Ligne  
Dim NoFichier , i  
monFichier = "C:\scripts\members.txt"  
'NoFichier = FreeFile  
OpenFile monFichier 'For Input As #NoFichier  
 
End Sub
 
 
'-------------------------------------
'fonction qui récupère le nom des pcs dans le fichier members
 
 
 nom_pc="pc1"
 
 
 
 
'------------------------------------
'fonction qui crée un second fichier et recopie les noms des pcs dedans
Sub CreateFile()
         Dim fso, tf
         Set fso = CreateObject("Scripting.FileSystemObject" )
  Set tf = fso.CreateTextFile("C:\scripts\res.txt", True)
 
         tf.Write  (nom_pc &Chr(13)& Chr(10) )
         tf.Close
End Sub
CreateFile()
 
 
*******************
donc je suis bloqué ici!
pour info,la partie analyse je le savais déjà, c'est le vbs qui me pose pb.en PERL je pourrais aussi le faire en 1/2h
mais la en VBS je bloque

Reply

Marsh Posté le 11-06-2005 à 18:54:02    

Je viens de me rendre compte que l'aide de VBA est nettement moins conviviale en Office 2003 qu'en 97.
Je suis donc allé rechercher dans Office 97 comment faire.
 
C'est du VBA, je n'ai pas testé en VBS:

Dim iFileOut As Integer
 
Private Sub Start()
  Dim aSplit() As String
  Dim iFileCount As Integer
  Dim iFileIn As Integer
  Dim iLine As Integer
  Dim sBuffer As String
  Dim sInFile As String
  sInFile = "C:\scripts\members.txt"
  iFileIn = FreeFile
  Open sInFile For Input As #iFileIn
  NewFile (1)
  iLine = 0
  iFileCount = 1
  Do While Not EOF(iFileIn)
    Line Input #iFileIn, sBuffer
    If UCase(Left$(sBuffer, 6)) = "MEMBER" Then
      aSplit = Split(sBuffer, "=" )
      Print #iFileOut, Trim(aSplit(1))
      iLine = iLine + 1
      If iLine = 256 Then
        Close #iFileOut
        iFileCount = iFileCount + 1
        NewFile (iFileCount)
        iLine = 0
      End If
    End If
  Loop
  Close
End Sub
 
Sub NewFile(iCount As Integer)
  Dim sOutFile As String
  sOutFile = "C:\scripts\res" & CStr(iCount) & ".txt"
  iFileOut = FreeFile
  Open sOutFile For Output As #iFileOut
End Sub


J'utilise une variable globale. A toi de voir comment gérer tout ça plus "proprement" et adapter au VBS.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed