ventajas examples desventajas descargar vbscript

examples - vbscript virus



Lee y escribe en un archivo usando VBScript (9)

¿Cómo podemos leer y escribir una cadena en un archivo de texto usando VBScript? Quiero decir que tengo un archivo de texto que ya está presente, así que cuando uso este código a continuación:

Set fso = CreateObject("Scripting.FileSystemObject" ) Set file = fso.OpenTextFile("C:/New/maddy.txt",1,1)

Esto abre el archivo solo para leer, pero no puedo escribir nada y cuando uso este código:

Set fso = CreateObject("Scripting.FileSystemObject" ) Set file = fso.OpenTextFile("C:/New/maddy.txt",2,1)

Solo puedo usar este archivo para escribir pero no puedo leer nada. ¿Existe alguna forma de que podamos abrir el archivo para leer y escribir simplemente llamando al método OpenTextFile solo una vez?

Soy realmente nuevo en VBScript. Sólo estoy familiarizado con los conceptos de C. ¿Hay algún enlace para realmente comenzar con VBScript?

Supongo que necesito tener un buen conocimiento de los conceptos de objetos y propiedades.


A continuación hay un código simple para ejecutar esto:

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


Encuentre más sobre el objeto FileSystemObject en http://msdn.microsoft.com/en-us/library/aa242706(v=vs.60).aspx . Para un buen VBScript, recomiendo:

  • Opción explícita para ayudar a detectar errores tipográficos en las variables.
  • Función y Sub para mejorar la legibilidad y reutilización.
  • Constantes para que las constantes conocidas tengan nombres.

Aquí hay un código para leer y escribir texto en un archivo de texto:

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")


Esto es para crear un archivo de texto.

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

Y esto para leer un archivo de texto.

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


Independientemente de lo que esté intentando hacer, no debería haber necesidad de leer y escribir en un archivo al mismo tiempo. También usaría más memoria que siempre debe evitarse. Yo sugeriría leer todo el archivo usando el método .ReadAll y luego lo cierro y hago lo que sea necesario para hacer con los datos (suponiendo que lea el contenido en una variable) y luego escriba en el mismo archivo y sobrescriba el archivo . Si le preocupa que algo salga mal cuando sobrescriba el archivo actual, siempre puede intentar escribirlo en un archivo diferente y generar un error si eso no funciona antes de intentar sobrescribir el original.


No lo creo ... solo puede usar openTextFile para leer ( 1 ), escribir ( 2 ) o adjuntar ( 8 ). Referencia here .

Si estuvieras usando VB6 en lugar de VBScript, podrías hacer:

Open "Filename" [For Mode] [AccessRestriction] [LockType] As #FileNumber

Usando el modo Random . Por ejemplo:

Open "C:/New/maddy.txt" For Random As #1


Podría ponerlo en una hoja de Excel, idk si valdrá la pena para usted si es necesario para otras cosas, pero almacenar información en hojas de excel es mucho mejor porque puede leer y escribir fácilmente al mismo tiempo con el

''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

disculpe si esta respuesta no es útil, escriba por primera vez una respuesta y piense que esta podría ser la mejor manera para usted


Podrías abrir dos secuencias de texto, una para leer.

Set filestreamIn = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:/Test.txt,1)

y uno para anexar

Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:/Test.txt,8,true)

FilestreamIN puede leer desde el principio del archivo, y filestreamOUT puede escribir al final del archivo.


Puede crear un archivo temporal, luego cambiarle el nombre al archivo original:

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

El uso es casi el mismo usando 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


También puede leer todo el archivo y almacenarlo en una matriz

Set filestreamIN = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:/Test.txt",1) file = Split(filestreamIN.ReadAll(), vbCrLf) filestreamIN.Close() Set filestreamIN = Nothing

Manipule la matriz de la forma que elija y luego vuelva a escribirla en el archivo.

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