Universidad de Costa Rica
|
|
btp2a
: [BiTácora Plano ==> Arbol]
2010-1/ ==> I-Sem-2010 ci1201/ ==> este curso g04/ ==> este grupo oscar..arias/ ==> encabezado del email ECCI 10..carta/ ==> carta al estudiante 20..tpg/ ==> tareas programadas 01/ ==> primera tarea 02/ ==> siguiente tarea programada 30..ex1/ ==> primer examen 30..ex2/ ==> segundo examen 30..ex3/ ==> examen final 40..qz/ ==> quices de este semestre 50..doc/ ==> etc ~ etc |
Los profesores de la ECCI rutinariamente compilan varios documentos sobre el curso en una bitácora. Con el fin de mantener esta bitácora en un formato electrónico, se usa un estándar para nombrar cada uno de los documentos de la bitácora. Estos nombres corresponden a una estructura jerárquica de carpetas o subdirectorios, como se muestra en la Figura 1.
Si la Figura 1 es la estructura de subdirectorios para la bitácora, se puede almancenar todos los archivos de la bitácora en una sola carpeta incluyendo en el nombre de cada archivo el prefijo que muestra adónde estaría ese archivo almacenado en la jerarquía de directorio. Por ejemplo, los siguientes archivos calzan en la estructura jerárquica de la Figura 1:
2010.1.ci1201.g04.oscar..arias.10..carta.pdf 2010.1.ci1201.g04.oscar..arias.11..cartafirma.doc 2010.1.ci1201.g04.oscar..arias.11..cartafirma.png 2010.1.ci1201.g04.oscar..arias.12..lista.xls 2010.1.ci1201.g04.oscar..arias.13..temario.doc 2010.1.ci1201.g04.oscar..arias.14..asist.01.png 2010.1.ci1201.g04.oscar..arias.20..tpg.01.califica.pdf 2010.1.ci1201.g04.oscar..arias.20..tpg.01.enunciado.pdf 2010.1.ci1201.g04.oscar..arias.20..tpg.02.califica.pdf 2010.1.ci1201.g04.oscar..arias.20..tpg.02.enunciado.pdf 2010.1.ci1201.g04.oscar..arias.20..tpg.03.califica.pdf 2010.1.ci1201.g04.oscar..arias.20..tpg.03.enunciado.pdf 2010.1.ci1201.g04.oscar..arias.30..ex1.enunciado.pdf 2010.1.ci1201.g04.oscar..arias.30..ex1.medio.pdf 2010.1.ci1201.g04.oscar..arias.30..ex1.mejor.pdf 2010.1.ci1201.g04.oscar..arias.30..ex1.peor.pdf 2010.1.ci1201.g04.oscar..arias.30..ex2.enunciado.pdf 2010.1.ci1201.g04.oscar..arias.30..ex2.medio.pdf 2010.1.ci1201.g04.oscar..arias.30..ex2.mejor.pdf 2010.1.ci1201.g04.oscar..arias.30..ex2.peor.pdf 2010.1.ci1201.g04.oscar..arias.40..qz.01..enunciado.pdf 2010.1.ci1201.g04.oscar..arias.40..qz.02..enunciado.pdf 2010.1.ci1201.g04.oscar..arias.40..qz.03..enunciado.pdf 2010.1.ci1201.g04.oscar..arias.40..qz.04..enunciado.pdf 2010.1.ci1201.g04.oscar..arias.40..qz.05..enunciado.pdf 2010.1.ci1201.g04.oscar..arias.50.doc.asistentes.pdf 2010.1.ci1201.g04.oscar..arias.50.doc.bibliografia.pdf 2010.1.ci1201.g04.oscar..arias.50.doc.compilador.pdf |
Por brevedad, en la
Figura 2 solo se muestran los archivos
de un grupo (el "g04
"). El nombre del profesor se obtiene a partir de su
dirección de correo electrónico
ECCI, duplicando el punto
('.
') separador:
oscar..arias <==> oscar.arias@ecci.ucr.ac.cr
Usted
implementará su programa "btp2a.exe
" que
leerá los nombres de los archivos del directorio actual.
Luego, "btp2a.exe
" debe usar esos nombres para
generar un archivo de texto llamado "btp2a_exe.bat
"
que contiene comandos. Al ser ejecutado,
"btp2a_exe.bat
" transformará los archivos
actuales en una estructura de subdirectorios en los que
quedará almacenados cada uno de los archivos, pero
reduciendo el nombre de cada archivos eliminándole el
prefijo que contiene la información sobre la estructura
jerárquica usada para organizar la bitácora. Por
ejemplo, suponga que en el directorio actual se ejecuta el
programa "btp2a.exe
" y además ahí
también están los archivos llamados:
2010.1.ci1201.g04.oscar..arias.20..tpg.01.califica.pdf
2010.1.ci1201.g04.oscar..arias.20..tpg.01.enunciado.pdf
Al ejecutar "btp2a.exe
" el resultado será el
programa de comandos "btp2a_exe.bat
" que
incluirá, además de otras sentencias, las
siguientes:
:: btp2a_exe.bat [BiTacora Plano ==> Arbol] Produce el árbol correspondiente a los archivos actuales @echo off :: ... mkdir "2010" mkdir "2010\1" mkdir "2010\1\ci1201" mkdir "2010\1\ci1201\g04" mkdir "2010\1\ci1201\g04\oscar..arias" mkdir "2010\1\ci1201\g04\oscar..arias\20" mkdir "2010\1\ci1201\g04\oscar..arias\20..tpg" mkdir "2010\1\ci1201\g04\oscar..arias\20..tpg\01" move "2010.1.ci1201.g04.oscar..arias.20..tpg.01.califica.pdf" "2010\1\ci1201\g04\oscar..arias\20..tpg\01\califica.pdf" move "2010.1.ci1201.g04.oscar..arias.20..tpg.01.enunciado.pdf" "2010\1\ci1201\g04\oscar..arias\20..tpg\01\enunciado.pdf" :: ... goto _out :_out :: btp2a_exe.bat ==> Fin de archivo |
En resumen, el archivo de comandos "btp2a_exe.bat
"
primero crea los subdirectorios y luego traslada cada archivo a su
carpeta destino:
Antes: 2010.1.ci1201.g04.oscar..arias.01.carta.pdf
Después: 2010/1/ci1201/g04/oscar..arias/01/carta.pdf
Carpeta: 2010/1/ci1201/g04/oscar..arias/01
Archivo: carta.pdf
Para implementar su programa "btp2a.exe
" usted
necesita grabar en una lista
"<std::list>
" todos los nombres de los archivos.
Luego debe ordenarla para evitar crear la misma carpeta muchas
veces y por último debe generar el comando
"move
" para cada uno de los archivos de la lista.
Utilice su clase
"readDir
"
para obtener los nombres de los archivos que usará para
generar el archivo de comandos "btp2a_exe.bat
".
Muchos archivos no son archivos de bitácora, pues no
comienzan con un año o no siguen el patrón de
nombres definido arriba, que siempre incluye: año,
semestre, curso, grupo y profesor. Su programa debe ignorar los
archivos que no forman parte de una bitácora.
cout << ":: btp2a_exe.bat [BiTacora Plano ==> Arbol] "; cout << " Produce el árbol correspondiente a los archivos actuales" << endl; cout << "@echo off" << endl; cout << ":: ..." << endl; cout << "mkdir \"2010\"" << endl; etc... etc... X:\DIR\SubDir> :: Genera btp2a_exe.bat X:\DIR\SubDir> btp2a.exe >btp2a_exe.bat X:\DIR\SubDir> :: Traslada cada archivo a su carpeta X:\DIR\SubDir> btp2a_exe.bat
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
Tiempo de entrega: | 7 días | |
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|