Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: rochro en 3 Abril 2014, 00:41 am



Título: AYUDA! CODIFICAR VBSCRIPT
Publicado por: rochro en 3 Abril 2014, 00:41 am
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.


Título: Re: AYUDA! CODIFICAR VBSCRIPT
Publicado por: 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
  1. Values = Array(Null, _
  2.               1773, 1773, 1773, 1773, _
  3.               1774, 1774, 1774, 1774, 1774, 1774, 1774, _
  4.               1775, 1775, 1775, 1775, 1775, 1775, 1775, _
  5.               "etc...")
  6.  
  7.  
  8. Set FSO   = CreateObject("Scripting.FileSystemObject")
  9. Set Files = FSO.GetFolder(".\").Files
  10.  
  11. For Each File in Files
  12.  
  13.    If LCase(FSO.GetExtensionName(File)) = LCase("T01") Then
  14.        Wscript.Echo "File:  " & File.name & _
  15.                     VBNewLine & _
  16.                     "Value: " & Values(Cint(Mid(File.name, 5, 3)))
  17.    End If
  18.  
  19. Next
  20.  
  21. Wscript.Quit(0)

Saludos


Título: Re: AYUDA! CODIFICAR VBSCRIPT
Publicado por: rochro en 7 Abril 2014, 17:00 pm
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
  1. Values = Array(Null, _
  2.               1773, 1773, 1773, 1773, _
  3.               1774, 1774, 1774, 1774, 1774, 1774, 1774, _
  4.               1775, 1775, 1775, 1775, 1775, 1775, 1775, _
  5.               "etc...")
  6.  
  7.  
  8. Set FSO   = CreateObject("Scripting.FileSystemObject")
  9. Set Files = FSO.GetFolder(".\").Files
  10.  
  11. For Each File in Files
  12.  
  13.    If LCase(FSO.GetExtensionName(File)) = LCase("T01") Then
  14.        Wscript.Echo "File:  " & File.name & _
  15.                     VBNewLine & _
  16.                     "Value: " & Values(Cint(Mid(File.name, 5, 3)))
  17.    End If
  18.  
  19. Next
  20.  
  21. 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 =)


Título: Re: AYUDA! CODIFICAR VBSCRIPT
Publicado por: Eleкtro en 7 Abril 2014, 23:09 pm
Si por ejemplo tenemos este Array:
Código:
{ 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
  1. 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


Título: Re: AYUDA! CODIFICAR VBSCRIPT
Publicado por: rochro en 10 Abril 2014, 18:28 pm
Si por ejemplo tenemos este Array:
Código:
{ 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.

=)