AYUDA! CODIFICAR VBSCRIPT

Iniciado por rochro, 3 Abril 2014, 00:41 AM

0 Miembros y 2 Visitantes están viendo este tema.

rochro

Buenas tardes,

Necesito realizar un procedimiento donde sucede lo siguiente:

- Tengo una carpeta con varios archivos donde los nombres son similares, sólo cambian los dígitos (ABCD001aA.T01, ABCD002aA.T01, CDEF003aA.T01, CDEF004aA.T01,...)
- Capturar en una variable los 3 dígitos del archivo (001, 002, 003,..) para que luego se relacione con el numero de 4 dígitos correspondientes (ejem: si es 003 imprimir 1773)

RELACION:
001   1773
002   1773
003   1773
004   1773
005   1774
006   1774
007   1774
008   1774
009   1774
010   1774
011   1774
012   1775
013   1775
014   1775
015   1775
016   1775
017   1775
018   1775
019   1776
.
.
364   1825
365   1825


Espero su pronta ayuda.


Gracias.

Eleкtro

#1
Creo que la otra vez que preguntaste esto no te entendí muy bien, pero ahora parece estar bastante más claro, a ver si esta vez he acertado... :

Código (vb) [Seleccionar]
Values = Array(Null, _
              1773, 1773, 1773, 1773, _
              1774, 1774, 1774, 1774, 1774, 1774, 1774, _
              1775, 1775, 1775, 1775, 1775, 1775, 1775, _
              "etc...")


Set FSO   = CreateObject("Scripting.FileSystemObject")
Set Files = FSO.GetFolder(".\").Files

For Each File in Files

   If LCase(FSO.GetExtensionName(File)) = LCase("T01") Then
       Wscript.Echo "File:  " & File.name & _
                    VBNewLine & _
                    "Value: " & Values(Cint(Mid(File.name, 5, 3)))
   End If

Next

Wscript.Quit(0)


Saludos








rochro

Cita de: Eleкtro en  3 Abril 2014, 10:01 AM
Creo que la otra vez que preguntaste esto no te entendí muy bien, pero ahora parece estar bastante más claro, a ver si esta vez he acertado... :

Código (vb) [Seleccionar]
Values = Array(Null, _
               1773, 1773, 1773, 1773, _
               1774, 1774, 1774, 1774, 1774, 1774, 1774, _
               1775, 1775, 1775, 1775, 1775, 1775, 1775, _
               "etc...")


Set FSO   = CreateObject("Scripting.FileSystemObject")
Set Files = FSO.GetFolder(".\").Files

For Each File in Files

    If LCase(FSO.GetExtensionName(File)) = LCase("T01") Then
        Wscript.Echo "File:  " & File.name & _
                     VBNewLine & _
                     "Value: " & Values(Cint(Mid(File.name, 5, 3)))
    End If

Next

Wscript.Quit(0)


Saludos


Eres lo máximo =). Muchas gracias por ayudarme.
Lo que me gustaría entender es como el array puede relacionar con el numero del archivo.

Bendiciones Eleкtro =)

Eleкtro

Si por ejemplo tenemos este Array:
{ 1773, 1774, 1775 }

El primer elemento (índice 0) es 1773, el segundo elemento (índice 1) es 1774, y el tercer elemento (índice 2) es 1775 , supongo que esto está más que claro, pero por si acaso lo comento igual.

En esta instrucción
Citar
Código (vb) [Seleccionar]
Wscript.Echo ... Values(Cint(Mid(File.name, 5, 3)))

Con el método Mid(File.name, 5, 3) hago un Substring a la cadena de texto y obtengo el String 001 (o 002, o 003, etc... según el nombre del archivo)

Después, con el método Cint(001) indico que el 001 se debe tratar como un valor numérico (Int32), esto le quita los ceros de la izquierda quedando un 1

Y por último con Values(1) llamo al índice 1 del Array, que es el valor 1773

El índice del Array del código está adaptado para que coincida de forma exacta con el String que obtienes al usar la función Mid, por eso el primer elemento del Array es Null.

Saludos








rochro

Cita de: Eleкtro en  7 Abril 2014, 23:09 PM
Si por ejemplo tenemos este Array:
{ 1773, 1774, 1775 }

El primer elemento (índice 0) es 1773, el segundo elemento (índice 1) es 1774, y el tercer elemento (índice 2) es 1775 , supongo que esto está más que claro, pero por si acaso lo comento igual.

En esta instrucción
Con el método Mid(File.name, 5, 3) hago un Substring a la cadena de texto y obtengo el String 001 (o 002, o 003, etc... según el nombre del archivo)

Después, con el método Cint(001) indico que el 001 se debe tratar como un valor numérico (Int32), esto le quita los ceros de la izquierda quedando un 1

Y por último con Values(1) llamo al índice 1 del Array, que es el valor 1773

El índice del Array del código está adaptado para que coincida de forma exacta con el String que obtienes al usar la función Mid, por eso el primer elemento del Array es Null.

Saludos

Eres lo máximo explicando. Te entendí muy bien.

Muchas Gracias por todo.

Hasta pronto.

=)