> Tous les forums > Forum Autres langages
 Script WSH de modification d'un fichier texte
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
piwu
  Posté le 23/05/2003 @ 06:12 
Aller en bas de la page 
Petit astucien
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
Publicité
Dhat
 Posté le 27/06/2003 à 22:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
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
piwu
 Posté le 28/06/2003 à 12:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
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]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !

 > Tous les forums > Forum Autres langages