| | 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
| | |
| |
| 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 | | | | | 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] | | | |
| | Haut de la page |
| | Inscrivez-vous ! |
- Posez vos questions
- Résolvez vos problèmes
- Aidez les autres
- Participez et créez vos discussions
- Dialoguez en privé avec d'autres membres
- Suivez vos sujets préférés
- Affichez les signatures des membres
|
|