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.
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.
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?
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.
Bien hecho.
Para poner códigos, usa la etiqueta (http://foro.elhacker.net/Themes/converted/images/bbc/code.gif)
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?
for /f "tokens=2,3,4" %%a in ('attrib "archivo.ext"') do (
echo Atributos : %%a %%b %%c
)
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?
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!