Cómo cambiar los atributos de una carpeta local

216 views
Skip to first unread message

RickDeCastro

unread,
Jun 23, 2015, 8:37:54 PM6/23/15
to publice...@googlegroups.com
Hola grupo.

Necesito modificar el atributo de una carpeta local a HIDDEN (oculta), preferentemente usando la API de Windows.
¿Alguien tiene a mano alguna función que me permita hacerlo?

Yo tenía una que usaba el "Scripting.FileSystemObject" para eso, pero ni esa la puedo encontrar...

Agradezco anticipadamente cualquier solución.

---
Ricardo De Castro Aquino
Asunción - Paraguay

Fernando D. Bozzo

unread,
Jun 24, 2015, 2:31:25 AM6/24/15
to publice...@googlegroups.com, deca...@netvision.com.py
Hola Rick, podés usar esta rutina.

Uso:
changeFileAttribute("ruta\archivo", "+H")
changeFileAttribute("ruta\archivo", "-H")

Podés cambiar los atributos R, S, H, A de archivos y directorios.

Saludos.-



    PROCEDURE changeFileAttribute
       
* Using Win32 Functions in Visual FoxPro
       
* example=103
       
* Changing file attributes
        LPARAMETERS  tcFileName
, tcAttrib
        tcAttrib    
= UPPER(tcAttrib)

       
#DEFINE FILE_ATTRIBUTE_READONLY        1
       
#DEFINE FILE_ATTRIBUTE_HIDDEN        2
       
#DEFINE FILE_ATTRIBUTE_SYSTEM        4
       
#DEFINE FILE_ATTRIBUTE_DIRECTORY    16
       
#DEFINE FILE_ATTRIBUTE_ARCHIVE        32
       
#DEFINE FILE_ATTRIBUTE_NORMAL        128
       
#DEFINE FILE_ATTRIBUTE_TEMPORARY    512
       
#DEFINE FILE_ATTRIBUTE_COMPRESSED    2048

        TRY
            LOCAL loEx AS EXCEPTION
, dwFileAttributes, dwFileAttributes_Orig, lnRet
            lnRet    
= 0

           
* read current attributes for this file
            dwFileAttributes        
= fb2p_GetFileAttributes(tcFileName)
            dwFileAttributes_Orig    
= dwFileAttributes

            IF dwFileAttributes
= -1
               
* the file does not exist
                EXIT
            ENDIF

            IF dwFileAttributes
> 0
                IF
'+R' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_READONLY)
                ENDIF
                IF
'+A' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE)
                ENDIF
                IF
'+S' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM)
                ENDIF
                IF
'+H' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN)
                ENDIF
                IF
'+D' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY)
                ENDIF
                IF
'+N' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_NORMAL)
                ENDIF
                IF
'+T' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY)
                ENDIF
                IF
'+C' $ tcAttrib
                    dwFileAttributes
= BITOR(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED)
                ENDIF

                IF
'-R' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_READONLY
                ENDIF
                IF
'-A' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) = FILE_ATTRIBUTE_ARCHIVE
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_ARCHIVE
                ENDIF
                IF
'-S' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) = FILE_ATTRIBUTE_SYSTEM
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_SYSTEM
                ENDIF
                IF
'-H' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) = FILE_ATTRIBUTE_HIDDEN
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_HIDDEN
                ENDIF
                IF
'-D' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_DIRECTORY
                ENDIF
                IF
'-N' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) = FILE_ATTRIBUTE_NORMAL
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_NORMAL
                ENDIF
                IF
'-T' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_TEMPORARY
                ENDIF
                IF
'-C' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) = FILE_ATTRIBUTE_COMPRESSED
                    dwFileAttributes
= dwFileAttributes - FILE_ATTRIBUTE_COMPRESSED
                ENDIF

               
* setting selected attributes
                lnRet    
= fb2p_SetFileAttributes(tcFileName, dwFileAttributes)
            ENDIF

        CATCH TO loEx
            THROW

        ENDTRY

        RETURN lnRet
    ENDPROC

Fernando D. Bozzo

unread,
Jun 24, 2015, 2:33:36 AM6/24/15
to publice...@googlegroups.com, fdb...@gmail.com, deca...@netvision.com.py
Olvidé un pedacito:

Dentro de la misma, al principio, agregale esto (es fundamental):

DECLARE INTEGER 'GetFileAttributesEx' IN Win32API AS fb2p_GetFileAttributesEx STRING  lpFileName, INTEGER fInfoLevelId, STRING  @ lpFileInformation




Saludos.-

RickDeCastro

unread,
Jun 24, 2015, 9:08:48 AM6/24/15
to publice...@googlegroups.com, fdb...@gmail.com, deca...@netvision.com.py
Excelente Fernando. Gracias.

La probaré.

Saludos

---
Ricardo De Castro Aquino
Asunción - Paraguay

RickDeCastro

unread,
Jun 24, 2015, 2:57:03 PM6/24/15
to publice...@googlegroups.com, deca...@netvision.com.py, fdb...@gmail.com
Fernandooo,

Me faltó la "fb2p_SETFileAttributes" también, ... 8|
¿La tienes por ahí? jejeje

Saludos atribuibles
---
Ricardo De Castro A.
Asunción - Paraguay

Fernando D. Bozzo

unread,
Jun 24, 2015, 2:59:19 PM6/24/15
to publice...@googlegroups.com, deca...@netvision.com.py, fdb...@gmail.com
Ups! Perdón, acá va:

        DECLARE SHORT 'SetFileAttributes' IN Win32API AS fb2p_SetFileAttributes STRING tcFileName, INTEGER dwFileAttributes




Saludos.-

RickDeCastro

unread,
Jun 24, 2015, 8:46:35 PM6/24/15
to publice...@googlegroups.com, fdb...@gmail.com, deca...@netvision.com.py
Ufff, ahora me salta un error de "cantidad de parámetros incorrecta", supongo que es en la función GETFile...
Pero tranquilo que ya encontré la que estaba buscando y esa sí me funcionó.
Gracias por la paciencia.
Saludos resueltos

---
Ricardo De Castro A.
Asunción - Paraguay

Fernando D. Bozzo

unread,
Jun 25, 2015, 1:19:27 AM6/25/15
to publice...@googlegroups.com

Rick, la función estaba lista para usar. Es la que uso dentro de FoxBin2Prg.

Se usa con 2 parámetros nada mas, el primero es el archivo, y el segundo lleva todos los atributos juntos, con un +-delante, como el primer ejemplo que te puse.

Saludos

Fernando D. Bozzo

unread,
Jun 25, 2015, 2:58:52 AM6/25/15
to publice...@googlegroups.com, fdb...@gmail.com
Otro ejemplo con más permisos:

changeFileAttribute("ruta\archivo", "+H+R+S")
changeFileAttribute("ruta\archivo", "-H-R-S")
Reply all
Reply to author
Forward
0 new messages