Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/02/2005, 12:03
Avatar de Muzztein
Muzztein
 
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Visual Basic Scripting Edition Referencia del lenguaje

--------------------------------------------------------------------------------

Código de ejemplo de FileSystemObject
El código de ejemplo descrito en esta sección proporciona un ejemplo real que demuestra muchas de las características disponibles en el modelo de objetos FileSystemObject. Este código muestra cómo todas las características del modelo de objetos funcionan juntas y cómo utilizar esas características eficazmente en su propio código.

Observe que puesto que este código es bastante genérico, se necesita algún código adicional además de ligeras modificaciones para que este código se pueda ejecutar en su equipo. Estos cambios son necesarios por las diversas maneras en que se controlan las entradas y salidas al usuario entre las páginas Active Server y Windows Scripting Host.

Para ejecutar este código en una página Active Server, utilice los pasos siguientes:

Cree una página Web estándar con una extensión .asp.

Copie el código de ejemplo siguiente en ese archivo entre las etiquetas <BODY>...</BODY>.

Encierre todo el código dentro de etiquetas <%...%>.

Mueva la instrucción Option Explicit desde su posición actual en el código a la parte superior de su página HTML, colocándolo incluso antes de la etiqueta <HTML> de apertura.

Sitúe etiquetas <%...%> alrededor de la instrucción Option Explicit para asegurarse de que se ejecuta en el servidor.

Agregue el código siguiente al final del código de ejemplo:

Sub Print(x)
Response.Write "<PRE>&ltFONT FACE=""Courier New"" SIZE=""1"">"
Response.Write x
Response.Write "</FONT></PRE>"
End Sub
Main
El código anterior agrega un procedimiento de impresión que se ejecutará en el servidor pero que muestra los resultados en el cliente. Para ejecutar este código en Windows Scripting Host, agregue el código siguiente al final del código de ejemplo:

Sub Print(x)
WScript.Echo x
End Sub
Main
La siguiente sección contiene el código:

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' Código de ejemplo FileSystemObject
' Copyright 1998 Microsoft Corporation. Todos los derechos reservados.
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''

Option Explicit

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' En cuanto a la calidad del código:
' 1) El código siguiente realiza un tratamiento de cadenas
' concatenando cadenas cortas con el operador "&" .
' Puesto que la concatenación de cadenas es costosa, esta es una
' manera poco eficiente de escribir el código.
' No obstante, es una forma de escribir código muy facil de
' mantener y se utiliza aquí porque este programa realiza
' frecuentes operaciones de disco y porque el disco es mucho
' más lento que las operaciones de memoria necesarias para
' concatenar las cadenas. Tenga en cuenta que esto es un código
' de demostración, no un código de producción.
'
' 2) "Option Explicit" se utiliza porque un acceso de variable declarada
' es un poco más rápido que el acceso de variable no declarada.
' También evita que se arrastren los errores por todo el código,
' como cuando escribe DriveTypeCDORM en lugar de DriveTypeCDROM.
'
' 3) El control de errores está ausente en este código para conseguir
' un código más legible. Aunque se tomaron precauciones para asegurar
' que el código no cometerá errores en casos comunes, los sistemas de
' archivo pueden ser impredecibles. En el código de producción, utilice ' On Error Resume Next y el objeto Err para atrapar posibles errores.
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' Algunas variables globales útiles
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
Dim TabStop
Dim NewLine

Const TestDrive = "C"
Const TestFilePath = "C:\Test"

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' Constantes devueltas por Drive.DriveType
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
Const DriveTypeRemovable = 1
Const DriveTypeFixed = 2
Const DriveTypeNetwork = 3
Const DriveTypeCDROM = 4
Const DriveTypeRAMDisk = 5

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' Constantes devueltas por File.Attributes
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
Const FileAttrNormal = 0
Const FileAttrReadOnly = 1
Const FileAttrHidden = 2
Const FileAttrSystem = 4
Const FileAttrVolume = 8
Const FileAttrDirectory = 16
Const FileAttrArchive = 32
Const FileAttrAlias = 64
Const FileAttrCompressed = 128

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' Constantes para abrir archivos
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
Const OpenFileForReading = 1
Const OpenFileForWriting = 2
Const OpenFileForAppending = 8

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' ShowDriveType
' Objetivo:
' Genera una cadena que describe el tipo de unidad de un objeto
' Drive dado.
' Demuestra lo siguiente
' - Drive.DriveType
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
Function ShowDriveType(Drive)

Dim S

Select Case Drive.DriveType
Case DriveTypeRemovable
S = "Extraible"
Case DriveTypeFixed
S = "Fijo"
Case DriveTypeNetwork
S = "Red"
Case DriveTypeCDROM
S = "CD-ROM"
Case DriveTypeRAMDisk
S = "Disco RAM"
Case Else
S = "Desconocido"
End Select

ShowDriveType = S

End Function

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' ShowFileAttr
' Objetivo:
' Genera una cadena que describe los atributos de un archivo o carpeta.
' Demuestra lo siguiente
' - File.Attributes
' - Folder.Attributes
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''

Function ShowFileAttr(File) ' File puede ser un archivo o carpeta

Dim S
Dim Attr

Attr = File.Attributes

If Attr = 0 Then
ShowFileAttr = "Normal"
Exit Function
End If

If Attr And FileAttrDirectory Then S = S & "Directorio "
If Attr And FileAttrReadOnly Then S = S & "Sólo lectura"
If Attr And FileAttrHidden Then S = S & "Oculto "
If Attr And FileAttrSystem Then S = S & "Sistema "
If Attr And FileAttrVolume Then S = S & "Volumen "
If Attr And FileAttrArchive Then S = S & "Modificado "
If Attr And FileAttrAlias Then S = S & "Alias "
If Attr And FileAttrCompressed Then S = S & "Comprimido "

ShowFileAttr = S

End Function

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
' GenerateDriveInformation
' Objetivo:
' Genera una cadena que describe el estado actual de las unidades
' disponibles.
' Demuestra lo siguiente
' - FileSystemObject.Drives
' - Iterating the Drives collection
' - Drives.Count
' - Drive.AvailableSpace
' - Drive.DriveLetter
' - Drive.DriveType
' - Drive.FileSystem
' - Drive.FreeSpace
' - Drive.IsReady
' - Drive.Path
' - Drive.SerialNumber
' - Drive.ShareName
' - Drive.TotalSize
' - Drive.VolumeName
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''

Function GenerateDriveInformation(FSO)

Dim Drives
Dim Drive
Dim S

Set Drives = FSO.Drives
S = "Número de unidades:" & TabStop & Drives.Count & NewLine & NewLine

' Construir la primera línea del informe.
S = S & String(2, TabStop) & "Nombre"
S = S & String(3, TabStop) & "Sistema"
S = S & TabStop & "Espacio"
S = S & TabStop & "Espacio"
S = S & TabStop & "Espacio"
S = S & TabStop & "Número" & NewLine

' Construir la segunda línea del informe.
S = S & "Letra"
S = S & TabStop & "Ruta"
S = S & TabStop & "Tipo"
S = S & TabStop & "¿Listo?"
S = S & TabStop & "de unidad"
S = S & TabStop & "de archivos"
S = S & TabStop & "total"
S = S & TabStop & "libre"
S = S & TabStop & "disponible"
S = S & TabStop & "de serie" & NewLine

' Línea separadora.
S = S & String(105, "-") & NewLine

For Each Drive in Drives
S = S & Drive.DriveLetter
S = S & TabStop & Drive.Path
S = S & TabStop & ShowDriveType(Drive)
S = S & TabStop & Drive.IsReady

If Drive.IsReady Then
If DriveTypeNetwork = Drive.DriveType Then
S = S & TabStop & Drive.ShareName
Else
S = S & TabStop & Drive.VolumeName
End If
S = S & TabStop & Drive.FileSystem
S = S & TabStop & Drive.TotalSize
S = S & TabStop & Drive.FreeSpace
S = S & TabStop & Drive.AvailableSpace
S = S & TabStop & Hex(Drive.SerialNumber)
End If

S = S & NewLine

Next

GenerateDriveInformation = S

End Function