Récuperer une ligne d'un fichier texte dans une variable

Récuperer une ligne d'un fichier texte dans une variable - VB/VBA/VBS - Programmation

Marsh Posté le 05-05-2006 à 10:25:25    

Salut a tous, je suis nouveau sur ce forum, et débutant en vbs !!! et je dois faire un script en vbs pour vérifier que (dans mon entreprise) le dossier Mes documents (c:\Docs and ...\USER)des utilisateurs soit bien celui qui est sauvegarder tous les midi. Pour la sauvegarde le dossier est renseigné dans un fichier .bks (lecture/ecriture avec notepad). j'ai déja réussi a récuperer le chemin du profil utilisé par l'user  :wahoo: (avec userprofile) mais je n'arrive pas à lire la 2ème ligne du fichier bks (ni la premiere d'ailleurs  :(  ) j'ai trouvé nombre de script qui le faisait mais aucun ne marche ou alors je n'arrive pas a le comprendre pour le paramétrer.
Quelqu'un a une idée ?? merci
 
je partirais comme ca  

Code :
  1. Dim Var1
  2. Open "C:\test.txt" For Input As #1
  3. Input #2, Var1
  4. Close #2
  5. MsgBox "Le fichier contient : " & Var1

 
mais  :fou:  :fou:

Reply

Marsh Posté le 05-05-2006 à 10:25:25   

Reply

Marsh Posté le 05-05-2006 à 10:47:25    

:hello:  
 
1. Le symbole "#" veut dire numéro en anglais et est l'équivalent de notre "n°".
En basic chaque fichier ouvert est identifié par un numéro que l'on choisit soi-même, mais qui doit être utilisé de manière cohérente.
En l'occurence, comme toutes tes opérations concernent le premier fichier, il faut avoir #1 partout.
 
2. Un fichier ouvert en mode Input est lu de manière séquentielle. Donc, pour lire le deuxième enregistrement, il faut d'abord lire le premier enregistrement, puis le deuxième.
 
3. Au lieu d'Input, il existe Line Input qui est peut-être plus approprié dans ton cas. Voir la doc.


Message édité par olivthill le 05-05-2006 à 10:48:17
Reply

Marsh Posté le 05-05-2006 à 11:02:27    

ou puis je trouver une doc "complete", quand au 1 et 2 pour les # c'est une erreur de copie de ma part désolé
meme avec les changements que je viens de faire (line.input), je n'ai meme pas ma msgbox qui s'affiche :(


Message édité par trik le 05-05-2006 à 11:14:46
Reply

Marsh Posté le 05-05-2006 à 12:02:55    

Ca y'est je m'en suis sorti grace à :

Code :
  1. chemin="h:\sauvegarde\maSauvegarde.txt"
  2. set fso=wscript.createobject("scripting.filesystemobject" )
  3. if fso.FileExists(chemin) then
  4.   set ouvrir=fso.opentextfile(chemin,1)
  5.  
  6. l1 = ouvrir.readline
  7. l2 = ouvrir.readline
  8. msgbox l2
  9. else
  10. msgbox "Le fichier n'existe pas"
  11. end if


mais ca ne marche pas avec un fivhier *.bks, ca me saoule


Message édité par trik le 05-05-2006 à 12:03:21
Reply

Marsh Posté le 05-05-2006 à 13:08:49    

Je soupçonne que le fichier *.bks contient de l'Unicode.
Dans ce cas, il suffirait de modifier la ligne du opentextfile en ajoutant le paramètre -1 de la manière suivante :

 set ouvrir=fso.opentextfile(chemin,1,,-1)

Reply

Marsh Posté le 05-05-2006 à 14:01:10    

Un grand merci, tu peu m'indiquer a quoi sert le paramètres -1, histoire de pas appliquer betement. en tout cas ca fonctionne maintenant merci beaucoup

Reply

Marsh Posté le 05-05-2006 à 14:10:38    

Pour info, le quatrième paramètre de OpenTextFile doit prendre la valeur 0 (qui est la valeur par défaut), si le fichier est codé en Ascii, ou -1 si le fichier est codé en Unicode.
Les fichiers Unicodes ont un en-tête constitué des deux octets FF FE, et chaque caractère est codé sur deux octets. Cela ne se voit pas avec Notepad, mais c'est visible avec un éditeur de texte qui montre le contenu en binaire.

Reply

Marsh Posté le 05-05-2006 à 15:58:32    

Merci de cette précision pour ceux que ca pourrais interresser, ce script verifie si le dossier mes documents utilisé par l'user est le meme que celui que sauvegarde ntbackup

Code :
  1. Dim WshShell
  2. Dim WSHFso
  3. Dim WshNetwork
  4. Dim WshSysEnv
  5. Dim userprof
  6. Set WSHShell = WScript.CreateObject("WScript.Shell" )
  7. Set WSHFso = WScript.CreateObject("Scripting.FileSystemObject" )
  8. Set WshNetwork = WScript.CreateObject("WScript.Network" )
  9. Set objFSO = createobject("Scripting.filesystemobject" )
  10. Set WshSysEnv = WshShell.Environment("Process" )
  11. 'USERPROF EST LE CHEMIN D'ACCÈS AU REPERTOIRE DE L'UTILISATEUR
  12. userprof = WshSysEnv("userprofile" )
  13. profil = mid(userprof, 27) 'j'enleve c:\Doc... pour avoir le login utilisé
  14. chemin="h:\sauvegarde\maSauvegarde.bks"  'le chemin du fichier bks de ma sauvegarde
  15. if WSHFso.FileExists(chemin) then
  16.    set ouvrir=WSHFso.opentextfile(chemin,1,,-1)    'merci a olivthill pour cette ligne
  17.    ligne1 = ouvrir.readline
  18.    ligne2 = ouvrir.readline   'le chemin complet se trouve a la deuxieme ligne (pour moi)
  19. else
  20.     msgbox "Le fichier"+" "+chemin+" "+" n'existe pas", , "Erreur"
  21. end if
  22. if ligne2=userprof then
  23.    
  24.     msgbox "Votre sauvegarde s'effectue normalement !!!" & vbCrLf & "Votre login est"+" "+profil & vbCrLf & "Votre répertoire personnel est"+" "+userprof, vbInformation, "Sauvegarde correcte"
  25. else
  26.    
  27.     msgbox "Votre sauvegarde semble ne pas se faire sur le bon répertoire !!!" & vbCrLf & "Veuillez prévenir votre administrateur réseau", vbCritical, "Problème de sauvegarde"
  28. end if


 
merci a toi olivithill tu m'as bien aidé, a plus sur le forumm


Message édité par trik le 05-05-2006 à 15:59:41
Reply

Sujets relatifs:

Leave a Replay

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