Cómo tomar atributos de archivo y mostrarlos con Echo SOLUCIONADO

Iniciado por <ИΘZIЭ(ŦB>, 23 Agosto 2009, 01:41 AM

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

<ИΘZIЭ(ŦB>

Qué tal compañeros?

Esta vez tengo este problema: necesito tomar los atributos de un archivo para mostrarlos en un mensaje pero no sé cómo hacerlo. Sé que el comando attrib seguido del nombre del archivo me muestra sus atributos, pero necesito tomar ese valor. ¿Sabrá alguno cómo hacerlo? Les estaré muy agradecido.

leogtz

Con el comando for, parametro /f.

No tengo un windows hace mucho pero podría ser así:
for /f "tokens=1" %%_ in ('attrib "archivo.ext"') do (
echo Atributo de mi archivo: %%_
)

%%_ lo puedes asignar a una variable dentro del mismo bucle.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

<ИΘZIЭ(ŦB>

#2
Gracias Leo por responder. Acabo de probar tu sugerencia y efectivamente funciona, pero nada más me muestra el atributo A, y resulta que tambien esta Oculto (H) y es de Sistema (S). Cuando uso attrib archivo.ext sale

A  SH            c:\archivo.ext

Leí por ahí que el atributo A lo tienen todos los archivos, de modo que que me interesan los otros (SHR).

¿Será que hay otra manera de verlos?

<ИΘZIЭ(ŦB>

#3
Acabo de notar cómo hacerlo. No domino aun el For pero recordé algo de uno que tengo por ahí y lo apliqué y funcionó. Le cambié el 1 de tokens por 2-3; quedó así:

for /f "tokens=2-3" %%_ in ('attrib "archivo.ext"') do (
echo Atributo de mi archivo: %%_
)

Así me toma nada más los valores que quiero.

leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

<ИΘZIЭ(ŦB>

Ok disculpa!

Ahora tengo otro problema. La modificación que acabo de hacer funciona solo cuando los atributos son SHR o SH, porque cuando es S R solo me toma la primera letra (S). Supongo que el espacio en blanco es el responsable.

Ya intenté con tokens=2-4 y tokens=2-5, y otros más, pero no funciona. Creo que mi problema es que no sé bien cómo funciona el tokens. ¿Puedo usarlo para tomar sólo las posiciones 2 3 y 4? ¿Cómo haría eso?

leogtz

Código (dos) [Seleccionar]
for /f "tokens=2,3,4" %%a in ('attrib "archivo.ext"') do (
echo Atributos :  %%a %%b %%c
)
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

<ИΘZIЭ(ŦB>

#7
Amigo, acabo de toparme con otro problema que de verdad no entiendo. El ciclo For me sirvió bien al usarlo en un .bat sólo, pero ahora lo integré al que me interesa y en vez de mostrarme los atributos del archivo, lo ejecuta. Usé el mismo código:


set variable=c:\archivo.txt

for /f "tokens=2" %%_ in ('%variable%') do (
        set atr=%%_
        echo Atributo: %atr%
        pause
)


Como ves, lo único que cambié fue que no coloqué el nombre del archivo directamente en el For, sino la variable que previamente tenía almacenado ese valor.

No entiendo por qué me abre el archivo en vez de mostrarme el atributo. ¿Tienes alguna idea?

<ИΘZIЭ(ŦB>

Listo! Cometí un error. Por eso no funcionó. Tal vez lo notaste, me había faltado escribir attrib en la sentencia. Ya lo solucioné. Gracias!