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.
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... :
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
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... :
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 =)
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
CitarWscript.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
1Y por último con
Values(1) llamo al índice
1 del Array, que es el valor
1773El í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
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.
=)