Comment lire et écrire une chaîne dans un fichier texte en utilisant VBScript? Je veux dire que j'ai un fichier texte qui est déjà présent, donc quand j'utilise ce code ci-dessous: -
Set fso = CreateObject("Scripting.FileSystemObject" )
Set file = fso.OpenTextFile("C:\New\maddy.txt",1,1)
Cela ouvre le fichier uniquement pour la lecture mais je ne peux rien écrire et quand j'utilise ce code: -
Set fso = CreateObject("Scripting.FileSystemObject" )
Set file = fso.OpenTextFile("C:\New\maddy.txt",2,1)
Je peux simplement utiliser ce fichier pour écrire mais je ne peux rien lire. Existe-t-il de toute façon par lequel nous pouvons ouvrir le fichier pour la lecture et l'écriture en n'appelant la méthode OpenTextFile
qu'une seule fois.
Je suis vraiment nouveau sur VBScript. Je ne connais que les concepts C. Existe-t-il un lien pour vraiment me lancer dans VBScript?
Je suppose que je dois avoir une bonne connaissance des concepts d'objets et de propriétés.
Vous pouvez créer un fichier temporaire, puis le renommer en fichier d'origine:
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
strTemp = "c:\test\temp.txt"
Set objFile = objFS.GetFile(strFile)
Set objOutFile = objFS.CreateTextFile(strTemp,True)
Set ts = objFile.OpenAsTextStream(1,-2)
Do Until ts.AtEndOfStream
strLine = ts.ReadLine
' do something with strLine
objOutFile.Write(strLine)
Loop
objOutFile.Close
ts.Close
objFS.DeleteFile(strFile)
objFS.MoveFile strTemp,strFile
L'utilisation est presque la même en utilisant OpenTextFile:
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
strTemp = "c:\test\temp.txt"
Set objFile = objFS.OpenTextFile(strFile)
Set objOutFile = objFS.CreateTextFile(strTemp,True)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
' do something with strLine
objOutFile.Write(strLine & "kndfffffff")
Loop
objOutFile.Close
objFile.Close
objFS.DeleteFile(strFile)
objFS.MoveFile strTemp,strFile
En savoir plus sur l'objet FileSystemObject à http://msdn.Microsoft.com/en-us/library/aa242706 (v = vs.60) .aspx . Pour un bon VBScript, je recommande:
Voici du code pour lire et écrire du texte dans un fichier texte:
Option Explicit
Const fsoForReading = 1
Const fsoForWriting = 2
Function LoadStringFromFile(filename)
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename, fsoForReading)
LoadStringFromFile = f.ReadAll
f.Close
End Function
Sub SaveStringToFile(filename, text)
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename, fsoForWriting)
f.Write text
f.Close
End Sub
SaveStringToFile "f.txt", "Hello World" & vbCrLf
MsgBox LoadStringFromFile("f.txt")
Vous pouvez ouvrir deux flux de texte, un pour la lecture
Set filestreamIn = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,1)
et un pour l'ajout
Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,8,true)
Le filestreamIN peut lire depuis le début du fichier et le filestreamOUT peut écrire à la fin du fichier.
Ne le pensez pas ... vous ne pouvez utiliser que openTextFile
pour lire (1
), l'écriture (2
) ou en ajoutant (8
). Référence ici .
Si vous étiez en utilisant VB6 à la place de VBScript, vous pourriez faire:
Open "Filename" [For Mode] [AccessRestriction] [LockType] As #FileNumber
Utilisation du mode Random
. Par exemple:
Open "C:\New\maddy.txt" For Random As #1
Vous pouvez le mettre dans une feuille Excel, idk si cela en vaut la peine si vous en avez besoin pour d'autres choses, mais le stockage d'informations dans des feuilles Excel est beaucoup plus agréable car vous pouvez facilement lire et écrire en même temps avec le
'this gives you an Excel app
oExcel = CreateObject("Excel.Application")
'this opens a work book of your choice, just set "Target" to a filepath
oBook = oExcel.Workbooks.Open(Target)
'how to read
set readVar = oExcel.Cell(1,1).value
'how to write
oExcel.Cell(1,2).value = writeVar
'Saves & Closes Book then ends Excel
oBook.Save
oBook.Close
oExcel.Quit
désolé si cette réponse n'est pas utile, écrivez une première fois une réponse et pensez que cela pourrait être une meilleure façon pour vous
Indépendamment de ce que vous essayez de faire, il ne devrait pas être nécessaire de lire et d'écrire dans un fichier en même temps. Il utiliserait également plus de mémoire, ce qui devrait toujours être évité. Je suggère de lire le fichier entier en utilisant la méthode .ReadAll puis de le fermer et de faire tout ce que vous devez faire avec les données (en supposant que vous lisez le contenu dans une variable), puis d'écrire dans le même fichier et d'écraser le fichier . Si vous craignez que quelque chose ne tourne pas rond lors de l'écrasement du fichier actuel, vous pouvez toujours essayer de l'écrire dans un autre fichier et générer une erreur si cela ne fonctionne pas avant d'essayer de remplacer l'original.
Vous pouvez également lire l'intégralité du fichier et le stocker dans un tableau
Set filestreamIN = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",1)
file = Split(filestreamIN.ReadAll(), vbCrLf)
filestreamIN.Close()
Set filestreamIN = Nothing
Manipulez le tableau comme vous le souhaitez, puis réécrivez le tableau dans le fichier.
Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",2,true)
for i = LBound(file) to UBound(file)
filestreamOUT.WriteLine(file(i))
Next
filestreamOUT.Close()
Set filestreamOUT = Nothing
Voici un code simple pour exécuter ceci:
sLocation = "D:\Excel-Fso.xls"
sTxtLocation = "D:\Excel-Fso.txt"
Set ObjExl = CreateObject("Excel.Application")
Set ObjWrkBk = ObjExl.Workbooks.Open(sLocation)
Set ObjWrkSht = ObjWrkBk.workSheets("Sheet1")
ObjExl.Visible = True
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSOFile = FSO.CreateTextFile (sTxtLocation)
sRowCnt = ObjWrkSht.usedRange.Rows.Count
sColCnt = ObjWrkSht.usedRange.Columns.Count
For iLoop = 1 to sRowCnt
For jLoop = 1 to sColCnt
FSOFile.Write(ObjExl.Cells(iLoop,jLoop).value) & vbtab
Next
Next
Set ObjWrkBk = Nothing
Set ObjWrkSht = Nothing
Set ObjExl = Nothing
Set FSO = Nothing
Set FSOFile = Nothing
C'est pour créer un fichier texte
For i = 1 to 10
createFile( i )
Next
Public Sub createFile(a)
Dim fso,MyFile
filePath = "C:\file_name" & a & ".txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(filePath)
MyFile.WriteLine("This is a separate file")
MyFile.close
End Sub
Et ceci pour lire un fichier texte
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set dict = CreateObject("Scripting.Dictionary")
Set file = fso.OpenTextFile ("test.txt", 1)
row = 0
Do Until file.AtEndOfStream
line = file.Readline
dict.Add row, line
row = row + 1
Loop
file.Close
For Each line in dict.Items
WScript.Echo line
WScript.Sleep 1000
Next