Me alegra que la información sirva.
Pasos para crear un archivo file.txt que for expanda a:
-rahscot-
Compilar el siguiente archivo en c y ejecutar en una carpeta dentro de un sistema de archivos ntfs.
#include <windows.h>
#include <stdio.h>
int main() {
/* Fuente: http://www.codersource.net/win32_file_sample.html */
HANDLE hFile;
DWORD wmWritten;
char strData[] = "Test";
hFile = CreateFile(
"file.txt"
,GENERIC_READ|GENERIC_WRITE
,FILE_SHARE_READ
,NULL
,OPEN_ALWAYS
, /*ATRIBUTOS */
FILE_ATTRIBUTE_READONLY
| FILE_ATTRIBUTE_ARCHIVE
| FILE_ATTRIBUTE_HIDDEN
| FILE_ATTRIBUTE_SYSTEM
/* Atributos Compreess no puede establecerse aqui */
| FILE_ATTRIBUTE_OFFLINE
| FILE_ATTRIBUTE_TEMPORARY
,NULL);
WriteFile(hFile,strData,(DWORD)(sizeof(strData)),&wmWritten,NULL);
CloseHandle(hFile);
/* Perdon por los system, pero aún no he estudiado programacion win32 */
/* ATRIBUTO COMPRESS */
system(">nul compact.exe /c file.txt");
/* EXPANDIR ATRIBUTOS CON CMD */
system("@echo off & for %F in (file.txt) do echo.%~aF");
}
Es interesante que cuando for expande:
attrib muestra:
attrib file.txt
A SHR C:\carpeta\file.txt
(hay dos espacios entre la primera A)
Para ver la d y la l :
Crear en C:\
el directorio o carpeta: creparse
Inicio-Ejecutar: compmgmt.msc
Ir a Administración de discos:
Clic derecho sobre propiedades de C:
Cambiar la letra y rutas de acceso a la unidad.
Agregar: Montar en la siguiente carpeta NTFS vacía:
Examinar: Expandir C: y seleccionar creparse.
Aceptar
Aceptar.
Luego en cmd:
for %F in (C:\creparse) do echo.%~aF
la carpeta creparse tiene ahora el icono de un disco duro, y al entrar en ella se ve el contenido de C: