You are on page 1of 8

Introduccin!

Un archivo batch (o bat) es un archivo de procesamiento por lotes, que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados. Cualquier comando DOS puede ser utilizado en un archivo batch.

Explicacin
Para crear un archivo bat, slo tenemos que abrir el bloq de notas y adentro escribir el comando que querramos que se realice! (abajo se encuentra una serie de comandos del ms) Luego vamos a Guardar Como y donde dice nombre lo guardan con la extencion .bat(*.bat). Ahora solo queda ejectarlo y listo! Esto puede resultar muy til, para automatizar tareas (siempre y cuando sepan usar los comandos del ms) y tambin para hacer bromas! o incluso virus! Digo virus porque con los comandos se puede hacer de todo! hasta formatear! Por eso, si ven algun .bat, les recomendaria no abrirlo o hacele click derecho - editar , asi de ese modo no se les ejecuta y ven el contenido que presenta!

ACA se encuentra una pgina con comando del ms que les puede ayudar:
http://www.ayuda-internet.net/tutoriales/manu-msdos/manu-msdos.html

Ahora slo les queda probar hasta q les salga hacerlo! y divertirse o renegarte de un rato!

Otro dato importante, a la hora de crear bat, es cuando tenemos que buscar el directorio,
ya que se debe escribir en un cierto cdigo. Ese cdigo consiste en que cada eslabon del directorio slo debe contener 8 caracteres, entonces aquellos directorios con mas de 8 caracteres, solo se deben escribir los primeros 6, seguidos por "~1" (sin comillas), hasta llegar a la unicacion del archivo, imagen ,etc. Por ejemplo, tengo una imgen llamada hola.jpg ubicada en C:\Documents and Settings\Administrador\Mis documentos entonces abrimos el bloq y escribimos : Start C:\Docume~1\Admini~1\MisDoc~1\hola.jpg (el comando START sirve para iniciar aplicaciones, programas, etc.)

Ni se les ocurra usar el comando

1.4.0 Construir un ejecutable (compilacin)

"For all intent and purpose, any description of what the codes are doing should be construed as being a note of what we thought the codes did on our machine on a particular Tuesday of last year. If you're really lucky, they might do the same for you someday. Then again, do you really feel *that*

lucky?". R. Freund. "Readme" de una subrutina matemtica (tomado de las FAQ de gnuplot).

1 Sinopsis En el presente Curso C++ nos referimos infinidad de veces al "Compilador". Sin embargo, hablando en propiedad no existe realmente tal cosa; en realidad los procesos anteriormente descritos ( 1.4) se ejecutan por una serie de aplicaciones distintas: El preprocesador, el analizador sintctico, el generador de cdigo, el enlazador y algunas otras auxiliares, aunque de forma genrica nos referimos a ellas como "el compilador". Adems, los "compiladores" ofrecen una serie de herramientas adicionales que no son propiamente para construir ejecutables, sino para labores auxiliares como puede ser la construccin de libreras. Estas herramientas son conocidas colectivamente como binutils. Nota: en el caso del "Compilador" Borland C++, se dispone de los mdulos que siguen, cada uno de los cuales realiza una labor concreta: ILINK32 EXE, BCC32 EXE, BRC32 EXE, BRCC32 EXE, COFF2OMF EXE, CPP32 EXE, FCONVERT EXE, GREP EXE, IMPDEF EXE, IMPLIB EXE, MAKE EXE, TDUMP EXE, TLIB EXE, TOUCH EXE, TRIGRAPH EXE, TD32 EXE (ver detalles 1.4.0w1). En el caso del compilador GNU para C++, adems del compilador propiamente dicho g++, estn el enlazador ld; el intrprete de comandos make, y una serie de utilidades auxiliares (binutils) tales como ar, nm, objcopy, objdump, ranlib, readelf, size, windres, etc.

Para construir el ejecutable es necesario cubrir sucesivamente diversas etapas utilizando los mdulos adecuados, y los resultados de unos como entradas de los siguientes. Sin embargo, para facilitar el proceso, los "compiladores" cuentan con una utilidad a la que se conoce genricamente como compilador pero que en realidad es un programa supervisor ("Frontend") que se encarga de invocar los mdulos sucesivos en el orden correcto y con los parmetros adecuados al fin que se persigue. En el caso del "Compilador" Borland C++ es BCC32.exe y CL.exe en MS Visual C++. En el caso del "Compilador" GNU C++, el programa supervisor es gcc, que acta como front-end del preprocesador (cpp), que acta a su vez como front-end generador de cdigo y este del enlazador (ld). Lo corriente es que el programa supervisor acepte una larga fila de parmetros que controlan su funcionamiento, dado que l mismo debe controlar una serie de procesos (en el caso de Bcc32, la lista asciende a ms de 135 opciones distintas). Viene a ser para el programador una especie de navaja suiza, la herramienta utilizada habitualmente. Solo en casos excepcionales se utilizan directamente el preprocesador, el generador de cdigo, el enlazador o cualquiera de las utilidades necesarias para la construccin de ejecutables y libreras. Nota: en general es posible comprobar la secuencia de actuacin del "compilador" invocndolo con la opcin -v ("verbose"). Por ejemplo, de esta forma es posible comprobar que durante su operacin, el compilador GNU cc invoca al enlazador, de nombre ld.

2 El proceso de construccin de un ejecutable (o librera) depende de la complejidad del proyecto. Consideramos tres casos:

Compilaciones unitarias: Cuando se trata de un solo fuente que produce un ejecutable. Veremos que en estos casos puede mandarse una orden directa al programa supervisor . Compilaciones medianas: Cuando el proyecto involucra unos pocos fuentes que tambin producen un ejecutable. En estos casos no es corriente que el programa supervisor sea invocado directamente mediante un solo comando. Se recurre a ficheros auxiliares (de configuracin), que contienen los parmetros; los ficheros de configuracin son ledos e interpretados por el supervisor . Proyectos grandes: En ocasiones los proyectos software implican centenares de fuentes que producen decenas de ejecutables de diversos tipos, incluidas libreras estticas y dinmicas. En estos casos no se puede hablar de simple compilacin; ms bien de "construir" la aplicacin. Mantener tales proyectos es cuestin complicada, generalmente se realiza mediante herramientas auxiliares. En el apartado correspondiente ( "construcciones". 1.4.0a) reseamos una utilidad especfica para controlar estas

Nota: precisamente uno de los puntos fuertes de las "Suites" RAD ( 1.8) de programacin del tipo C++Builder o MS Visual C++, es la cmoda gestin de proyectos grandes. Sin embargo, abrir un "proyecto" para una aplicacin de un par de fuentes o un sencillo ejemplo, supone matar pulgas a caonazos.

3 Compilaciones unitarias En estos casos puede mandarse una orden directa al supervisor indicndole cual es el fuente (fichero .c .cpp) que hay que compilar, y l se encarga de realizar todo el proceso, invocando en ltimo extremo al enlazador que construye el ejecutable. Por ejemplo: en el caso de Borland C++ 5.5, Bcc32.exe est alojado en el directorio ...BorlandCPP\bin\. Suponiendo que queremos compilar un fuente denominado hola.c con las opciones por defecto ( bcc32 hola.c Si realizamos muchas de estas compilaciones y/o utilizamos opciones, puede ser cmodo construir un fichero de proceso por lotes (.BAT en los entornos MS-DOS y Windows) que facilite la labor. A continuacin se muestra el contenido de uno de estos ficheros (compi.BAT), que utilizo habitualmente para este tipo de compilaciones: ECHO OFF rem compi.BAT Compilar UN solo .C como C++ Normas Relajadas bcc32 -IE:\BorlandCPP\Include -LE:\BorlandCPP\Lib -Vd -P -j5 %1%.C rem -P Perform C++ compile regardless of source extension rem -Vd for loop variable scoping rem -j5 Errors: stop after n messages (Default = 25) if errorlevel 1 goto ERROR IF NOT ERRORLEVEL 1 ECHO !! OK. Compilacion C++ (-Vd) GOTO END 1.4.3), podemos lanzar una orden directa desde el CLI [1]:

: ERROR ECHO !! ERROR en la compilacion.... Pause : END echo BORRADO fichero .TDS!! erase %1%.TDS Puede comprobarse que el fichero no necesita que se le indique el nombre completo del objeto a compilar (l incluye la terminacin .c). En consecuencia, solo hay que escribir: compi hola En este caso, los comandos -IE:\BorlandCPP\Include y -LE:\BorlandCPP\Lib, instruyen al compilador de los directorios donde debe buscar los ficheros de cabecera (comando -I) y las libreras (comando -L), que estn en el directorio BorlandCPP de la unidad lgica E: Si se realizan frecuentemente compilaciones de tipo distinto (con diversas opciones en la lnea de comando), puede ser buena idea preparar los ficheros .BAT correspondientes, por ejemplo: compil.bat; compi1.bat; etc.

4 Compilaciones medianas Salvo en programitas de ejemplo y verificacin, es muy raro que un programa C++ exista en un solo fichero fuente. En estos casos el proceso se complica un poco ms, porque hay que instruir al compilador de todos los fuentes que debe procesar. Por supuesto, en uno de ellos debe existir una funcin main ( 4.4.4).

Ilustraremos la operativa con un sencillo programa de dos mdulos pA.c y pB.c, y un fichero de cabecera especfico <Cabe-1.h> que suponemos en el mismo directorio que los fuentes (no es conveniente mezclar nuestras propias cabeceras con las del compilador). Fichero Cabe-1.h: // Cabe-1.h #include <iostream.h> #include <conio.h> #define Salida(msg) cout << #msg << endl; # define PAUSA for( ; ; ) if(getch()!=0) break Fichero pA.c: #include <Cabe-1.h> // pA.c Prueba MODULOS-1

extern void func(float); extern var1; namespace { // Anonimo float pi = 3.14; // identificador conocido solo en este fichero }

int main() { // ======= float pi = 0.1; cout << "pi = " << pi << endl; func(pi); // invocada funcin externa con pi local cout << "Variable es " << var1 << endl; Salida(Pulse una tacla para terminar); PAUSA; Salida("el programa ha terminado :-)"); return 0; } Fichero pB.c: #include <Cabe-1.h> // pB.c Prueba MODULOS-2

int var1 = 33; namespace { // subespacio anonimo float pi = 10.0001; // conocido solo en este fichero void func(void) { std::cout << "Invocada func-1: pi = " << pi << endl; } } void func(float f) { std::cout << "Invocada func-2: f = " << f << endl; } La salida, despus de construido el ejecutable es: pi = 0.1 Invocada Segunda func(): f = 0.1 Variable es 33 Pulse una tacla para terminar "el programa ha terminado :-)" El comando necesario para construir el ejecutable es: bcc32 -ID:;E:\BorlandCPP\Include -LE:\BorlandCPP\Lib -Vd -P -Q pa.C pb.c Observe que en este caso se ha alterado ligeramente el comando -I, para que el preprocesador encuentre la cabecera <Cabe-1.h>, que est en el directorio actual (el directorio de trabajo est en la unidad lgica D:). Para automatizar el proceso, en estos casos utilizo un fichero compiv.bat del siguiente aspecto: ECHO OFF rem Compiv.BAT Compilar 2 fuentes (pa.c & pb.c) como C++ bcc32 -ID:;E:\BorlandCPP\Include -LE:\BorlandCPP\Lib -Vd -P -Q pa.C pb.c rem -Q extended compiler error information

if errorlevel 1 goto ERROR IF NOT ERRORLEVEL 1 ECHO !! OK. Compilacion C++ (-Vd) GOTO END : ERROR ECHO !! ERROR en la compilacion.... Pause : END echo Fichero .TDS BORRADO!! erase %1%.TDS

5 Ficheros de configuracin Ocurre que en ocasiones la lnea de comando para invocar el supervisor es demasiado larga an en proyectos pequeos. El motivo puede ser doble: por un lado puede contener muchas opciones de compilacin y enlazado, hemos indicado que el programa Bcc32 puede contener ms de 135 opciones distinta. De otro lado (y esto es lo ms frecuente), puede contener una larga serie de nombres de ficheros fuente y/o libreras que deben ser enlazadas juntas. El resultado es que incluso en un fichero de proceso por lotes .BAT como el anterior resultara una lnea larga y farragosa. Para simplificar el proceso se utilizan ficheros auxiliares que contienen los parmetros y/o opciones de compilacin. Estos ficheros son ledos e interpretados por el supervisor. Existen dos opciones al respecto [2]: Los ficheros de configuracin ("Configuration files") y los ficheros de rplica ("Computer response files"). Adems de simplificar la utilizacin repetitiva de largos comandos de compilacin, ocurre que existe una limitacin en cuanto a la longitud mxima que puede tener la lnea de comando en los Sistemas Operativos, y estos ficheros representan una forma de soslayar dicha limitacin.

5.1 Ficheros de configuracin Los ficheros de configuracin son ficheros de texto ASCII de terminacin .CFG que contienen opciones para el programa supervisor; cada opcin debe ir separada por un espacio o nueva lnea. Cuando se invoca Bcc32.exe, busca un fichero de configuracin por defecto con el nombre Bcc32.CFG en el directorio actual, y si no lo encuentra, en el directorio donde reside el compilador. El programa de instalacin del compilador Borland crea un fichero Bcc32.CFG con el siguiente contenido (suponemos que se ha instalado en el directorio E:\BorlandCPP): -I"e:\BorlandCPP\include" -L"e:\BorlandCPP\lib" Adems del fichero por defecto, es posible utilizar varios otros en la misma lnea de comando. Para invocar el programa supervisor con otro fichero de configuracin, adems del estndar, se utiliza la siguiente sintaxis:

+[path]nombre-de-fichero Por ejemplo, la lnea de comando que sigue invoca al supervisor con un fichero denominado Pro-1.CFG: BCC32 +C:\PROYECTO\Pro-1.CFG fuente.cpp En cualquier caso, las opciones de la lnea de comando pueden coexistir con un fichero de configuracin, pero tienen precedencia sobre las indicaciones contenidas en aquel. Por ejemplo: BCC32 +C:\PROYECTO\Pro-1.CFG -P fuente.c

5.2 Ficheros de rplica Los ficheros de rplica ("Response files") pueden contener opciones para el supervisor y/o nombres de ficheros (los de configuracin solo pueden contener opciones para el supervisor). Un fichero de respuesta es tambin un fichero de texto ASCII donde cada entrada debe estar separada por un espacio o nueva lnea. Los ficheros de respuesta pueden tener cualquier terminacin (los ficheros de rplica incluidos con el compilador BC++ tienen la extensin .RSP).

5.2.1 Contenido El contenido es exactamente el mismo que se incluira en la lnea de comando si la invocacin se hiciera manualmente y la lnea pudiera ser lo suficientemente larga, pero teniendo en cuenta que en el fichero de rplica se puede partir una lnea y seguir en la siguiente si se termina la primera con +. Por ejemplo, un fichero RespFile.RSP: /c c0ws+ myprog,myexe + mymap + mylib cws pasado al enlazador con el comando: Ilink32 equivale a la lnea de comando: @RespFile.RSP (ver invocacin ),

ILINK32 /c c0ws myprog,myexe,mymap,mylib cws Como puede verse, a diferencia de la lnea de comando, el fichero de rplica s puede tener varias lneas. Observe que si una lnea debe seguir en la siguiente pero la opcin termina en el carcter +, por ejemplo la opcin /v+, la lnea del fichero de respuesta debe terminar en: ...../v+ +. Observe tambin que las opciones que deben ir separadas por comas en la lnea de comando, deben seguir separadas por comas en el fichero de rplica (lnea myprog,myexe + del ejemplo).

5.2.2 Invocacin La sintaxis para invocar un ficheros de rplica con el compilador es: BCC32 @[path]fichero-replica.txt Para invocar varios al mismo tiempo se emplea la siguiente sintaxis: BCC32 @[path]fichero-1.txt @[path]fichero-2.txt Tambin en este caso las opciones de la lnea de comando tienen precedencia sobre las indicadas en los ficheros de rplica. Recuerde que no solo el compilador (BCC32) acepta este tipo de ficheros como parte del comando de entrada; el enlazador (ILINK32) y otras utilidades tambin puede aceptar este tipo de fichero de rdenes (por ejemplo la utilidad TLIB

El archivo Autoexect.bat slo se usaba en DOS o en versiones de Windows basadas en MS-DOS, como Windows 3.x, Windows 95, Windows 98, y Windows Me. El archivo se ejecuta una vez que el sistema operativo ha arrancado y despus de que el fichero Config.sys haya sido procesado. En Windows, esto ocurre antes de que el entorno grfico sea lanzado. El Autoexec.bat se utiliza, principalmente, para establecer las variables de entorno y ejecutar los antivirus, utilidades y manejadores de drivers que deben operar al nivel ms bajo posible. Las aplicaciones que se ejecutan en el entorno de Windows, desde su carga, se recogen en el registro de Windows. Las lneas precedidas por la cadena REM son observaciones y no funcionan como parte del Autoexec.bat. Las lneas con REM se usan como comentarios o para inhabilitar drivers, como por ejemplo, el del CD-ROM... O tambin se usa este formato para guardar diferentes bromas para ser ejecutadas al momento de abrirlas En las ltimas versiones de DOS, el autoexec.bat, al igual que el config.sys, podan estructurarse de manera que al iniciar la mquina, pudiesen escogerse distintas configuraciones y procesos a ejecutar, mediante un men, en funcin de las necesidades del usuario, con el fin de aprovechar al mximo los recursos solo ms dos

You might also like