VBScript – Trabajar con archivos

Written by lopezatienza on 29/12/2008 – 15:34 -

Trabajar con archivos VBScript

Hay dos categorías principales de control de archivos:

  • Crear, agregar o quitar datos y leer archivos
  • Mover, copiar y eliminar archivos

Crear archivos

Hay tres formas de crear un archivo de texto vacío (algunas veces se le llama "secuencia de texto").

La primera forma es utilizar el método CreateTextFile. El ejemplo siguiente demuestra cómo crear un archivo de texto utilizando el método CreateTextFileMethod:

[VBScript]

Dim fso, f1

fso = CreateObject("Scripting.FileSystemObject")

f1 = fso.CreateTextFile("c:\archprue.txt", True)

 

La segunda forma de crear un archivo de texto es utilizar el método OpenTextFile del objeto FileSystemObject con el indicador ForWriting establecido.

[VBScript]

Dim fso, ts

Const ForWriting = 2

fso = CreateObject("Scripting. FileSystemObject")

ts = fso.OpenTextFile("c:\prueba.txt", ForWriting, True)

 

Una tercera forma de crear un archivo de texto es utilizar el método OpenAsTextStream con el indicador ForWriting establecido.

[VBScript]

Dim fso, f1, ts

Const ForWriting = 2

fso = CreateObject("Scripting.FileSystemObject")

fso.CreateTextFile("c:\prueba1.txt")

f1 = fso.GetFile("c:\prueba1.txt")

ts = f1.OpenAsTextStream(ForWriting, True)

 

 Agregar datos al archivo

Una vez creado el archivo de texto, agregue datos al archivo utilizando los tres pasos siguientes:

Abrir el archivo de texto.

Escribir los datos.

Cerrar el archivo.

Para abrir un archivo existente, utilice el método OpenTextFile del objeto FileSystemObject o bien el método OpenAsTextStream del objeto File.

Para escribir datos al archivo de texto abierto, utilice los métodos Write, WriteLine o WriteBlankLines del objeto TextStream, según las tareas esquematizadas en la tabla siguiente.

Tarea

Método

Escribir datos en un archivo de texto abierto sin un carácter de nueva línea a continuación.

Write

Escribir datos en un archivo de texto abierto con un un carácter de nueva línea a continuación.

WriteLine

Escribir una o más líneas en blanco en un archivo de texto abierto.

WriteBlankLines

 

Para cerrar un archivo abierto, utilice el método Close del objeto TextStream.

Nota   El carácter de nueva línea contiene un carácter o caracteres (según el sistema operativo) para avanzar el cursor al principio de la línea siguiente (retorno de carro/avance de línea). Tenga en cuenta que el final de algunas cadenas puede tener ya dichos caracteres no imprimibles.

El ejemplo siguiente demuestra cómo abrir un archivo, utilizar los tres métodos write para agregar datos al archivo y, a continuación, cerrar el archivo:

[VBScript]

Sub CreateFile()

        Dim fso, tf

        fso = CreateObject("Scripting.FileSystemObject")

        tf = fso.CreateTextFile("c:\archprue.txt", True)

        ' Escribir una línea con un carácter nueva línea.

        tf.WriteLine("Probando 1, 2, 3.")

        ' Escribir tres caracteres de nueva línea al archivo.     

        tf.WriteBlankLines(3)

        ' Escribir una línea.

        tf.Write("Esto es una prueba.")

        tf.Close()

End Sub

 

Leer archivos

Para leer datos desde un archivo de texto, utilice los métodos Read, ReadLine o ReadAll del objeto TextStream. La tabla siguiente describe que método utilizar para diversas tareas.

Tarea

Método

Leer un número específico de caracteres de un archivo.

Read

Leer una línea entera (hasta, pero sin incluir, el carácter de nueva línea).

ReadLine

Leer el contenido completo de un archivo de texto.

ReadAll

 

Si utiliza los métodos Read o ReadLine y desea saltar un grupo de datos en particular, utilice los métodos Skip o SkipLine. El texto resultante de los métodos de lectura se almacena en una cadena que se puede mostrar en un control, analizar con funciones de cadena (como Left, Right y Mid), concatenar, etc.

El ejemplo siguiente demuestra cómo abrir un archivo, escribir en él y después, leer desde él:

[VBScript]

Sub ReadFiles()

        Dim fso, f1, ts, s

        Const ForReading = 1

        fso = CreateObject("Scripting.FileSystemObject")

        f1 = fso.CreateTextFile("c:\archprue.txt", True)

        ' Escribir una línea.

        Response.Write("Escribir archivo <br>")

        f1.WriteLine("Hola a todos")

        f1.WriteBlankLines(1)

        f1.Close()

        ' Leer los contenidos del archivo.

        Response.Write("Leer archivo <br>")

        ts = fso.OpenTextFile("c:\archprue.txt", ForReading)

        s = ts.ReadLine

        Response.Write("Contenido del archivo= '" & s & "'")

        ts.Close()

End Sub


Mover, copiar y eliminar archivos

El modelo de objetos FSO puede mover, copiar y eliminar archivos con dos métodos distintos como se describe en la tabla siguiente.

Tarea

Método

Mover un archivo

File.Move o FileSystemObject.MoveFile

Copiar un archivo

File.Copy o FileSystemObject.CopyFile

Eliminar un archivo

File.Delete o FileSystemObject.DeleteFile

El siguiente ejemplo crea un archivo de texto en el directorio raíz de la unidad C, escribe alguna información en él, lo mueve a un directorio llamado \tmp, realiza una copia de él en un directorio llamado \temp y, a continuación, elimina las copias en ambos directorios.

Para ejecutar el ejemplo siguiente, cree directorios llamados \tmp y \temp en el directorio raíz de la unidad C:

[VBScript]

Sub ManipFiles()

        Dim fso, f1, f2, s

        fso = CreateObject("Scripting.FileSystemObject")

        f1 = fso.CreateTextFile("c:\archprue.txt", True)

        Response.Write("Escribir archivo <br>")

        ' Escribir una línea.

        f1.Write("Esto es una prueba.")

        ' Cerrar el archivo para la escritura.

        f1.Close()

        Response.Write("Mover archivo a c:\tmp <br>")

        ' Obtener un identificador para el archivo en la raíz de C:\.

        f2 = fso.GetFile("c:\archprue.txt")

        ' Mover el archivo al directorio \tmp.

        f2.Move("c:\tmp\archprue.txt")

        Response.Write("Copiar archivo a c:\temp <br>")

        ' Copiar el archivo a \temp.

        f2.Copy("c:\temp\archprue.txt")

        Response.Write("Eliminar archivos <br>")

        ' Obtener identificadores para la ubicación actual de los archivos.

        f2 = fso.GetFile("c:\tmp\archprue.txt")

        f3 = fso.GetFile("c:\temp\archprue.txt")

        ' Eliminar los archivos.

        f2.Delete()

        f3.Delete()

        Response.Write("Terminado")

End Sub

 


Autor: Antonio Lopez Atienza


Tags:
Posted in VBScript | 7 Comments »

7 Comments to “VBScript – Trabajar con archivos”

  1. Alex García Says:

    muy bueno pero como lo hago con un texto en un servidor web ??

  2. lopezatienza Says:

    Hola Alex.

    ¿Te refieres a acceder a ficheros en una página web?

    Explícate a ver si así puedo ayudarte.

    Un saludo.

  3. kj Says:

    No me funciona cuando creo un archivo con extension prueba.vbs, en xp o win2k3 server. estare haciendo algo mal?

  4. kj Says:

    Y me gustaria saber, cual es mas confiable de un .bat o un vbs, ya que hago todos mis scripts en .bat, pero me gustaria cambiarlo a vbs.

    Recomendaciones

  5. lopezatienza Says:

    Hola kj, ¿Que es lo que no te funciona?

    Todo lo que puedas hacer con un Batch-File puedes hacerlo con un vbs, además de mucho más.

    Visual Basic Script es una light version de Visual Basic Language y se trata de un lenguaje de script orientado a objetos, con todo lo que ello implica.

    Mientras que los Batch-Files solo funciona en DOS Mode (Command Prompt), vbs es usado además de esto para aplicaciones independientes y programación de sitios Web.

    Bueno espero haberte ayudado.

    Un saludo.

  6. heldert Says:

    buenas tardes., porfavor necesito ayuda urgente, necesito hacer un script en vbscripst que lea todos los archivos .txt q estan e un directorio y luego si encuntra lineas iguales , cree un nuevo txt donde haga una resumen de cuantas veces encontro esa linea algo como esto

    juan 12:15
    juan 10:20
    juan 12:23

    y muestre asi en el nuevo .txt

    juan 3

    mejor dicho que omita en todas las lineas la hora y el ip, q solo tome el usuario, pero que muestre toda esa liena exceptuando esos datos

  7. heldert Says:

    a mi correo es adberik2005@hotmail.com

Leave a Comment

 

RSS
MCC D5E