> Tous les forumsAutres langages

 Script WSH de modification d'un fichier texte
Statut du sujet : NON RESOLU Imprimer
 piwu
  Posté le 23/05/2003 @ 06:12  
 Petit astucien

42 Messages
Bonjour, j'ai un petit problème avec un script que j'essaye de mettre en place. Mon but serait d'ouvrir un fichier texte, changer une ligne de ce fichier texte et fermer le fichier texte. Le probleme est que je ne sais pas me positionner à une ligne précise du fichier texte. Je sais le lire, ou bien effacer tout son contenu pour ecrire d'autres données, mais effacé une seule ligne pour la remplacer, j'ai pas réussi. Bref, c'est du VBS, et si vous avez une solution, voici le script : [code] Option Explicit Dim oSh, oSystemDrive, strCheminFile, oFSO, oBoot '** Création de l'objet Shell ** Set oSh = WScript.CreateObject("WScript.Shell") '** Mise en variable des variables d'environnement ** oSystemDrive = oSh.ExpandEnvironmentStrings("%SYSTEMDRIVE%") '** Mise en variable du chemin du fichier boot.ini ** strCheminFile = (oSystemDrive & "\boot.ini") '** Suppression de tous les attributs du fichiers boot.ini ** oSh.Run ("attrib -R -A -S -H " & strCheminFile) '** Attente de 2 secondes afin d'arrêter le script pendant que la commande attrib fonctionne ** WScript.Sleep 2000 '** Réinitialisation de tous les attributs du fichiers boot.ini sauf la lecture seule ** 'oSh.Run ("attrib +A +S +H " & strCheminFile) '** Attente de 2 secondes afin d'arrêter le script pendant que la commande attrib fonctionne ** 'WScript.Sleep 2000 '** Création de l'objet FileSystemObject ** Set oFSO = WScript.CreateObject("Scripting.FileSystemObject") '** Ouverture du fichier boot.ini ** Set oBoot = oFSO.OpenTextFile(strCheminFile, 2) '????????????????????????????????????????????????????????????????????????????? '??? Que dois-je mettre ici pour remplacer la seconde ligne par "timeout = 3"? '????????????????????????????????????????????????????????????????????????????? '** Fermeture du fichier boot.ini ** oBoot.Close '** Destructeurs ** Set oSh = nothing Set oSystemDrive = nothing Set oFSO = nothing Set oBoot = nothing [/code] merci d'avance piwu
 
 Aller en bas de la page  
 
Publicité
 Dhat  Posté le 27/06/2003 à 22:24  
Petit astucien

529 Messages
Bonjour, Je ne connaissais que l'ouverture d'un fichier pour lecture, ou réécriture, ou ajout. Mais ne peux-tu pas créer un nouveau fichier ? Voici un essai. Mes souvenirs de WSH et VBS sont déjà anciens. Soyez donc indulgents. Set oFSO = Wscript.CreateObject ("Scripting.FileSystemObject") set InFile = oFSO.OpenTextFile ("test in.txt") ' On suppose pour simplifier que le fichier de sortie existe déjà set OutFile = oFSO.OpenTextFile ("test out.txt", 2) Count = 0 do while InFile.AtEndOfStream <> True Count = Count + 1 Ligne = InFile.ReadLine If Count = 2 Then Ligne = "Ici nouvelle ligne 2" OutFile.WriteLine Ligne loop InFile.Close OutFile.Close
 Aller en bas de la page Revenir au message précédent Revenir en haut de la page
 piwu  Posté le 28/06/2003 à 12:42  
Petit astucien

42 Messages
j'ai reussi tout seul finalement [code]Option Explicit '** Déclaration des variables ** Dim oSh, oSystemDrive, oFSO, oBoot Dim strCheminFile, strTxt, strTableau, strTimeOut Dim nTimeOut '** Initialisation de la variable nTimeOut à 3 secondes ** nTimeOut = 3 '** Création de l'objet Shell ** Set oSh = WScript.CreateObject("WScript.Shell") '** Mise en variable des variables d'environnement ** oSystemDrive = oSh.ExpandEnvironmentStrings("%SYSTEMDRIVE%") '** Mise en variable du chemin du fichier boot.ini ** strCheminFile = (oSystemDrive & "\boot.ini") '** Suppression de tous les attributs du fichiers boot.ini ** oSh.Run ("attrib -R -A -S -H " & strCheminFile) '** Attente de 2 secondes afin d'arrêter le script pendant que la commande attrib fonctionne ** WScript.Sleep 2000 '** Création de l'objet FileSystemObject ** Set oFSO = WScript.CreateObject("Scripting.FileSystemObject") '** Ouverture du fichier boot.ini en lecture** Set oBoot = oFSO.OpenTextFile(strCheminFile, 1, False) '** Mise en variable du texte de tout le fichier boot.ini ** strTxt = oBoot.ReadAll() '** Fermeture du fichier boot.ini ** oBoot.Close '** Mise en tableau du texte du fichier boot.ini avec comme séparation le retour à la ligne ** strTableau = Split(strTxt, vbCrLf) '** Mise en variable de la ligne à remplacer ** strTimeOut = "timeout = " & nTimeOut '** Remplacement de la seconde ligne du tableau par la nouvelle ligne ** strTableau(1) = strTimeOut '** Reconstitution du texte du fichier boot.ini ** strTxt = Join(strTableau, vbCrLf) '** Destructeur de l'objet oBoot ** Set oBoot = nothing '** Ouverture du fichier boot.ini en écriture** Set oBoot = oFSO.OpenTextFile(strCheminFile, 2, False) '** Recopie Intégrale du texte modifié dans le fichier boot.ini ** oBoot.Write strTxt '** Réinitialisation de tous les attributs du fichiers boot.ini sauf la lecture seule ** oSh.Run ("attrib +A +S +H " & strCheminFile) '** Attente de 2 secondes afin d'arrêter le script pendant que la commande attrib fonctionne ** WScript.Sleep 2000 '** Destructeurs ** Set oSh = nothing Set oSystemDrive = nothing Set oFSO = nothing Set oBoot = nothing [/code]
 Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Haut de la page 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2014 WebastucesAller en haut de la page