Desglosando atributos de un archivo (vbscript)

Iniciado por Novlucker, 23 Agosto 2009, 05:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Novlucker

Buenas ...

Simplemente que he visto una consulta sobre obtener los atributos de un archivo en batch, y he recordado que tengo un script vbs que hacía justamente eso, creería que habría otra manera de hacerlo, pero como no la recuerdo dejo esta función :P

Lo he hecho porque si hacemos algo como lo siguiente:

Código (vb) [Seleccionar]
Msgbox createobject("scripting.filesystemobject").getfile(wscript.scriptfullname).attributes

Nos devolverá un valor que representa la sumatoria de los diferentes atributos que tiene el archivo, con la siguiente tabla como referencia

Valor
1
2
4
8
Atributo
Solo Lectura
Oculto
Sistema
Letra de disco
Valor
16
32
64
128
Atributo
Carpeta/directorio
Archivo
Link o acceso directo
Comprimido

O sea que si al utilizar attributes obtenemos un 35, debemos de suponer que el archivo tiene atributos de archivo (32), solo lectura (1) y oculto (2), por lo que la siguiente función hace justamente eso, listar los atributos de manera individual.

Código (vb) [Seleccionar]
Function Attrib(Atinteger)
'by Novlucker

If Atinteger >0 then
AtList = array(128,64,32,16,8,4,2,1)
For v = Lbound(AtList) to UBound(AtList)
If Atinteger/AtList(v) >= 1 then
At = At & ":" & AtList(v)
Atinteger = Atinteger mod AtList(v)
End if
Next
Attrib = Right(At,Len(At)-1)
Else
Attrib = 0
End if

End Function


En definitiva .. le pasamos el valor que representa los atributos (la sumatoria), y obtenemos un string con cada uno de los atributos, el cual de ser necesario se procesaría con un split

Código (vb) [Seleccionar]
Msgbox Attrib(35)
'Resultado 32:2:1


Eso es todo, este script ya tiene un tiempo he incluso ya lo había publicado en otro sitio, y si alguien recuerda que exista un método directo para hacer esto, mejor :D

Saludos

P.d: por alguna razón el tabulado del código no queda como corresonde ¬¬
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein