\documentclass[12pt,a4paper]{article}
\usepackage[spanish]{babel}
\usepackage{graphicx}

\title{Tema IV Ejercicio III: Comandos DOS}
\author{Nicolás A. Ortega Froysa}

\begin{document}
\maketitle
\pagebreak
\tableofcontents
\pagebreak
\section{Hoja De Control Del Documento}
\begin{table}[h!]
	\begin{center}
		\caption{Documento/Archivo}
		\label{tab:document}
		\begin{tabular}{|l|c|l|c|}
			\hline
			{\bf Fecha Última Modificación} & \the\day/\the\month/\the\year &
			{\bf Versión/Revisión} & v01r02 \\ \hline
			{\bf Fecha Creación} & \the\day/\the\month/\the\year & \hfill & \hfill \\ \hline
			{\bf Fecha Finalización} & \the\day/\the\month/\the\year & \hfill &
			\hfill \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\caption{Registro De Cambios}
		\label{tab:registro-cambios}
		\begin{tabular}{|c|c|c|}
			\hline
			{\bf Versión/Revisión} & {\bf Página(s)} & {\bf Descripción} \\
			\hline
			v01r01 & Todas & Creación y elaboración del documento. \\ \hline
			v01r02 & 4-7 & Añadir contenidos nuevos. \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\caption{Autores Del Documento}
		\label{tab:autores}
		\begin{tabular}{|c|c|}
			\hline
			{\bf Apellidos, Nombre} & {\bf Curso} \\ \hline
			Ortega Froysa, Nicolás Andrés & 1 \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\begin{tabular}{|p{4cm}|p{4cm}|p{4cm}|}
			\hline
			{\bf Preparado} & {\bf Revisado} & {\bf Aprobado} \\ \hline
			Ortega Froysa, Nicolás Andrés & \hfill & \hfill \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\pagebreak

\section{Creación de Archivos y Directorios}
Para poder crear carpetas en el {\em shell} de DOS, usamos el comando
\texttt{mkdir}. Esto también lo podemos usar para crear todo un {\em path} de
directorios, uno dentro de otro, simplemente especificando el camino. De este
modo podemos crear una estructura de directorio con los siguientes comandos:

\begin{verbatim}
>mkdir carp1\carp11
>mkdir carp1\carp12
>mkdir carp2\carp21
>mkdir carp3
\end{verbatim}

\begin{figure}
	\centering
	\includegraphics[width=0.75\linewidth]{imgs/00-tree.png}
	\caption{Comando \texttt{tree} de los archivos.}
	\label{fig:tree}
\end{figure}

Si ahora corremos el comando \texttt{tree} dentro de este directorio (que en
nuestro caso se denomina \texttt{practica}) veremos toda la estructura de este
directorio y sus subdirectorios (figura \ref{fig:tree}).

A partir de aquí podemos añadir archivos dentro de estos directorios. Añadiremos
los archivos siguientes con cualquier editor de texto:

\begin{itemize}
	\item \texttt{arch11.txt} en \texttt{carp11}
	\item \texttt{arch12.txt} en \texttt{carp12}
	\item \texttt{arch21.txt} en \texttt{carp21}
\end{itemize}

También se puede crear simplemente un archivo y copiarlo. Esto se podría hacer
con el procedimiento siguiente, creando el primer archivo con el contenido
``test'' y copiándolo a los demás directorios con otro nombre:

\begin{verbatim}
# Crear archivo arch11.txt
>echo test >> carp1\carp11\arch11.txt
# Copiar el archivo primero a las distintas carpetas con otro
# nombre
>copy carp1\carp11\arch11.txt carp1\carp12\arch12.txt
>copy carp1\carp11\arch11.txt carp1\carp21\arch21.txt
\end{verbatim}

\section{Mover, Copiar, y Renombrar}

Aquí acabamos de ver el comando \texttt{copy}, que sirve para copiar archivos.
También existe otro que es \texttt{move} para mover los archivos. Estos
funcionan con dos argumentos: el archivo original, y el archivo destino. En el
caso del archivo destino, si se especifica un directorio ya existente en vez de
un nombre de archivo para el nuevo destino, simplemente se copiará/moverá a ese
directorio con el mismo nombre de archivo.

Como podemos imaginar con lo dicho anteriormente, el comando \texttt{move} se
puede usar para cambiar el nombre de un archivo simplemente especificando el
nuevo nombre como destino.

Cuando copiamos archivos de un lugar a otro, podemos concatenar el contenido de
dos o más archivos a un nuevo archivo por medio del símbolo \texttt{+}. De este
modo, el próximo comando concatenaría el contenido de \texttt{test0.txt} y
\texttt{test1.txt} en un archivo \texttt{test01.txt}:

\begin{verbatim}
>copy test0.txt + test1.txt test01.txt
\end{verbatim}

\section{Borrando Archivos y Directorios}
Para borrar archivos usamos el comando \texttt{del <archivo>}. Lo cual, para
borrar el archivo \texttt{arch21.txt} podemos correríamos el comando siguiente:

\begin{verbatim}
>del carp2\carp21\arch21.txt
\end{verbatim}

Si ya estamos dentro de esa carpeta, podemos simplemente correr \texttt{del
arch21.txt}, o si queremos hacer referencia a él desde la raíz del dispositivo
de almacenamiento (asumiendo que sea \texttt{C:}) correríamos:

\begin{verbatim}
>del C:\...\carp2\carp21\arch21.txt
\end{verbatim}

Este comando no es posible usarlo directamente con directorios, ya que está
hecho para trabajar sólo con archivos. Para borrar directorios podemos usar el
otro comando, \texttt{rmdir} que por defecto sólo funcionará si la carpeta está
vacía. Para borrar una carpeta que tiene contenido dentro tendremos que usar el
argumento \texttt{/s} de la forma siguiente.

\begin{verbatim}
>rmdir /s carp3
\end{verbatim}

\section{Modificando los Atributos de un Archivo}
Para poder ver los atributos de los archivos y directorios que hemos creado
podemos usar el comando \texttt{attrib [file]}. Este comando, si le añadimos el
argumento \texttt{/s} se hará de forma recursiva (como vimos con \texttt{rmdir})
y nos mostrará todos los atributos de todos los archivos en un directorio. Si no
especificamos ningún archivo por defecto mostrará todos los atributos de los
archivos dentro del directorio actual. También podemos usar este mismo comando
para modificar los atributos de un archivo por medio de un \texttt{+x} ó
\texttt{-x} donde \texttt{x} es uno de los siguientes:

\begin{itemize}
	\item \texttt{r}: sólo lectura ({\em read-only})
	\item \texttt{h}: escondido ({\em hidden})
	\item \texttt{s}: sistema ({\em system})
	\item \texttt{a}: archivar ({\em archive})
\end{itemize}

\section{Conclusión}
Usando la línea de comandos, también en Windows, nos proveerá más flexibilidad y
poder sin necesidad de navegar un interminable entorno gráfico mal-organizado
para encontrar las opciones que buscamos. En vez de esto, podemos simplemente
usar el comando \texttt{help <comando>} para saber qué opciones tenemos para un
comando, y de este modo también podremos finalizar nuestras tareas de una forma
más rápida. Por ejemplo, la creación de los archivos al principio hubiera sido
una tarea de varios minutos si usásemos un programa como {\em NotePad}, pero en
la línea de comandos simplemente corremos un comando por cada archivo.

En fin, incluso en Windows usar la línea de comandos es más eficiente que usar
el entorno gráfico, lo cual nos dice que seguramente deberían de haberse quedado
mejor con MS-DOS.

\pagebreak

\section{Derechos de Autor y Licencia}
Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa <nicolas@ortegas.org>
\\
Este documento se distribuye bajo los términos y condiciones de la licencia
Creative Commons Attribution No Derivatives 4.0 International.

\end{document}
