parte 1 Bueno, pues voy a empezar por aquí. Un archivo batch (o bat) es un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensión *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas. Cualquier comando DOS puede ser utilizado en un archivo batch. Para que os vayais familiarizando con batch y sus codigos, podeis iros a Inicio>Accesorios>Simbolo de Sistema (los que tengáis windows, los que no usad un emulador o algo por el estilo) y ahí escribis "help". Esos son todos los comandos que puedes escribir con bat. (ademas de esos estan las modificaciones, los atributos a estos, las expresiones alternativas... etc. Nosotros vamos a programar en un bloc de notas, a palo seco. Para guardarlo simplemente le ponemos como nombre "nombredelarchivo.bat" quitandole el .txt. Para abrilo nos vamos al bloc de notas y le damos a Abrir. Dentro de la pantallita de abrir, en Tipo, seleccionamos "Todos los archivo", pinchamos en el documento y se abre, o simplemente le damos click derecho al documento>Editar. Bien, pues vamos con nuestro primer código, este es el tipo de códig que genera un Hola Mundo. Código: @echo off echo Hola Mundo! pause exit Bien, voy a ir explicando. El @echo off sirve para quitar el eco del programa. Si no sabeis lo que es el eco, probad a poner @echo on. El echo sirve para escribir cosas en la pantalla. El pause inserta una pausa que continua al pulsar una tecla. El exit nos hace salir del programa. Ahora voy a explicar un par de modificaciones. Cuando insertamos un pause, sale: "pulse una tecla para continuar . . . " Imaginemonos que por un casual necesitamos poner en vez de eso, " pulse una tecla para acceder al menu" o "pulse una tecla para salir". ¿Cómo lo haríamos? Pues bien, se hace con "pause>nul". Con pause>nul lo que hacemos es insertar una pausa pero sin que salga nada en la pantalla, con lo que podriamos poner un echo antes para que pareciese que hay un comando para acceder al menu, otro para salir, otro para cotinuar... ect: Código: @echo off echo Hola Mundo! echo Pulse una tecla para salir pause>nul exit Otro comando importante puede ser el "echo." Con el echo. podemos insertar una linea e blanco en nuestra pantalla: Código: @echo off echo. echo. echo Hola Mundo! echo. echo Pulse una tecla para salir pause>nul exit El ultimo (o eso creo) de los codes que os voy a enseñar hoy es el "cls". Con el cls borramos todo lo que haya ahora mismo en la patalla. Código: @echo off echo. echo. echo Hola Mundo! echo. pause cls echo. echo Pulse una tecla para salir pause>nul exit parte 2 Bien, hoy vamos a trabajar con variables, if y goto. Las variables son valores que toma batch que pueden cambiar en cualquier momento. En batch, una variable se crea de la siguiente forma: (Hay que tener en cuenta que de nombrevariable al "=" no hay ningun espacio, si lo pusiésemos nos daría un error.) Código: @echo off set nombrevariable= valorvariable exit Para llamar a una variable, se hace poniendo la variable entre signos de %. Así: Código: @echo off set var1= Hola, me llamo saul echo. echo %var1% echo. pause exit Para que el usuario defina una variable, se usa el comando set/p. De la siguiente forma: set/p nombredelavariable=Pregunta para el usuario cuya respuesta sera el valor de la variable. Ejemplo: Código: @echo off echo. set/p edad=Escribe aqui tu edad: echo. cls echo. set/p nombre=Escribe aqui tu nombre: echo. cls echo. echo Hola %nombre%, segun los datos de antes tienes %edad% años. echo. pause exit Para sumar/restar..ect dos variables, se hace de la siguiente forma: set/a nombrevar=varA + varB set/a nombrevar=varA - varB set/a nombrevar=varA * varB set/a nombrevar=varA / varB Por ejemplo: Código: @echo off echo. set/p num1=Dime el primer numero que deseas sumar: echo. set/p num2=Dime el segundo numero que deseas sumar: echo. cls set/a resultado= num1 + num2 echo. echo. echo %num1% echo + %num2% echo ______________ echo %resultado% echo. echo. echo pulsa una tecla para salir pause>nul exit Bien, una vez que hallais comprendido esto, vamos con el goto. El goto es un comando que nos lleva a un punto "de control" que definimos asi: ":nombrepunto" Para ir a "nombrepunto" escribiriamos "goto nombrepunto". Por ejemplo: Código: @echo off :inicio cls echo. echo Hola, este es un programita cachondo. echo. pause cls echo. set/p nombre=Cual es tu nombre? cls echo. echo Hola, te llamas %nombre% echo. echo Pulsa una tecla para volver al principio. echo Para cerrar, pulsa la "x" de la esquina superior derecha. echo. pause>nul goto inicio ahora que sabemos como se usa goto, vamos a usar if para crear menus y para que una respuesta tenga varias opciones. If es un comando o una sentencia para decir que: Si esto es = a esto otro, hago esto, si no, hago esto otro. Se expresa asi: If [not] var1 (condicion) var2/numero/cadena accion [else] (2accion) [not] y [else]son opcionales, not sirve para decir: si var1 no es = a var2, hago esto (condicion) es la condicion que tu le pones, las mas usadas son: variable==valor (para expresar si variable es igual a valor haz esto) variable LSS valor (para expresar si variable es menor a valor haz esto) variable GTR valor (para expresar si variable es mayor a valor haz esto) variable LEQ valor (para expresar si variable es menor o = haz esto) variable GEQ valor (para expresar si variable es mayor o = haz esto) (acción) aquí van las acciones que hará el programa si se cumple la condición. Ej: " if valor1==valor2 goto inicio " Para escribir mas de una accion se usa "&&" Ej: " if valor1==valor2 goto inicio && set var5= 19 " [else (2accion)] sirve para decir que en el caso contrario de que esto no se haga, que haga la segunda accion (2accion). Cuando se usa else la accion1 va entre "()". Ej: " if valor1==valor2 (goto inicio && set var19=123) else goto fin &&echo. && echo es el fin, pulsa una tecla para salir. && pause>nul&&exit Bien, con este code podriamos hacer un programita como este: Código: @echo off :inicio echo. echo Hola, estas en una interfaz de user no muy interactiva. echo. pause cls echo. set/p nom= Primero dime como te llamas: echo. echo Hola %nom%. Pulsa una tecla para acceder al menu. echo. pause>nul cls :menu echo. echo Hola estas en el menu. echo. set/p deseo=Escribe lo que deseas %nom% ("ayuda" para ver la ayuda): if %deseo%==ayuda goto ayuda if %deseo%==calculadora goto calculadora if %deseo%==reiniciar goto inicio if %deseo%==salir (goto salir) else echo. && echo mal && goto menu :ayuda echo. echo hola estas en la ayuda. echo. echo Bien esto es lo que debes escribir para moverte por aqui: echo "calculadora" sumar o restar un numero echo "reiniciar" reiniciar el programa echo "salir" salir del programa echo. echo Pulsa una tecla para ir al menu pause>nul goto menu :calculadora echo. echo Escribe "sumar" para sumar, "restar" para restar y "menu" pra menu echo. set/p destino2=Que quieres hacer %nombre%?: if %destino2%==sumar goto sumar if %destino2%==restar goto restar if %destino2%==menu (goto menu) else echo. && echo Escribe bien && goto calculadora :sumar echo. set/p num1=Dime el primer numero que deseas sumar: echo. set/p num2=Dime el segundo numero que deseas sumar: echo. cls set/a resultado= num1 + num2 echo. echo. echo %num1% echo + %num2% echo ______________ echo %resultado% echo. echo. echo pulsa una tecla para ir de nuevo a la calculdora. pause>nul goto calculadora :restar echo. set/p num1=Dime el minuendo: echo. set/p num2=Dime el sustraendo: echo. cls set/a resultado= num1 - num2 echo. echo. echo %num1% echo - %num2% echo ______________ echo %resultado% echo. echo. echo pulsa una tecla para ir a la calculadora pause>nul goto calculadora :salir cls echo. echo gracias por usar mi programa echo. echo pulsa una tecla para salir pause>nul exit parte 3 En este capitulo aprenderemos cosas como los comandos start, los redireccionamientos, el call y el cd. 1. Title Por si se me olvido, el comando title sirve para ponerle nombre a nuestra ventana: Código: @echo off title Titulo de mi ventana echo. echo Esto es un bat con nombre en la barrita azul echo. pause exit 2.Start Sirve para llamar programas desde el bat actual. Se abren evidentemente en una ventana nueva, y no tienen nada que ver con el bat primero. Podemos abrir desde un .txt asta una base de datos (siempre que tengamos el programa correspondiente para abrirlo) Código: @echo off echo. echo Esto te abre la cmd y se cierra echo. pause start %systemroot%\system32\cmd.exe exit 3.Redireccionamientos Los redireccionamientos son lo mas usado. Sirven para crear archivos de cualquier tipo con informacion que nosotros queramos. Se usa > para borrar todo lo que hay en el archivo y escribir (si no existe tal archivo, bat lo crea. Se usan >> para escribir a continuacion de lo que ya hay escrito en un archivo. Para indicar que se manda al archivo, se suele usar "echo". Si no quieres que pase informacion por la pantalla, usa >nul: echo Esto se va a archivo.txt sin salir por la pantalla >nul >archivo.txt Código: @echo off echo. echo Pulsa una tecla y se creara un archivo en el mismo directorio echo que este con el nombre archivo.txt y contendra el texto echo Hola mundo y Adios mundo pause>nul echo Hola mundo >nul >archivo.txt echo Adios mundo >nul >>archivo.txt echo. echo Archivo creado. pause exit 4.Call El comando call es realmente util. Sirve para llamar a un programa y que se ejecute dentro de el nuestro, cuando acabe de ejecutarse seguira corriendo nuestro bat principal desde el call. Tenemos dos programas. En este ejemplo, estaremos en un juego en el que necesitas llegar hasta un punto para usar un ataque especial. Empezamos por el segundo: Nombre archivo: call2.bat Código: @echo off set ataque2=Bola de Fuego Primer programa: Nombre archivo: call1.bat Código: @echo off echo. set ataque1=Bola de Aire set ataque2=? echo Bien, estas frente al gran maestro. echo Ahora mismo tienes los siguientes ataques: echo -%ataque1% echo -%ataque2% echo. echo Pulsa una tecla para que el gran maestro te enseñe mas. pause>nul call call2.bat cls echo. echo Aprendiendo {........} ping -n3 localhost >nul cls echo. echo Aprendiendo {-.......} ping -n3 localhost >nul cls echo. echo Aprendiendo {--......} ping -n3 localhost >nul cls echo. echo Aprendiendo {---.....} ping -n3 localhost >nul cls echo. echo Aprendiendo {----....} ping -n3 localhost >nul cls echo. echo Aprendiendo {-----...} ping -n3 localhost >nul cls echo. echo Aprendiendo {------..} ping -n3 localhost >nul cls echo. echo Aprendiendo {-------.} ping -n3 localhost >nul cls echo. echo Aprendiendo {--------} ping -n3 localhost >nul cls echo. echo Has aprendido un nuevo ataque: echo Ataques disponibles: echo -%ataque1% echo -%ataque2% echo. echo Has completado tu entrenamiento. echo Pulsa una tecla para salir. pause>nul exit 5.CD Con cd cambiamos a un directorio específico. El directorio por defecto desde un archivo bat es la direccion del propio documento. Por ejemplo, estamos escribiendo en un bat que está en C:\Archivos de Programa\Bats. Si escribimos: cd c: Nos situamos en C:\, por lo tanto, si yo quiero crear un archivo en C: haria asi: cd c: echo Hola mundo! >nul >archivo.bat esto me crearia "archivo.bat" en c: independientemente de donde este mi archivo de origen. los siguientes programas son archivos .bat para crearlos crea un archivo de texto y pega el texto dentro luego clic en archivo>guardar como> y guardalo con cualquier nombre pero al final deve de llevar la extencion .bat no txt ejemplo: miprograma.bat como crear un archivo que copia en contenido de una usv asia un directorio codigo mkdir c:\backup xcopy d:\*.* c:\backup\ /e el contenido se guardara en una carpeta llamada backup en nuestro disco c la parte roja es donde deves de poner la letra corrspondiente para copiarejemplo su tu memoria tiene la letra f deves de poner la f guardar el codigo en un txt selecciona la opcion {guardar como} ponle cualquier nombre pero al final deve terminar con .vbs Explicacion: En el anterior ejemplo con mkdir creamos un directorio en la dirección especificada, y en siguiente comando hacemos un xcopy de todo de todas las extensiones de la unidad donde se monta el usb al directorio creado. Tambien tenemos parámetros propios del comando xcopy como /h /i /c /k /e /r /y /v, que pueden probar en la parte marcada de verde /H: Copia archivos ocultos y también archivos del sistema. /I : Si el destino no existe y hay que copiar más de un archivo, se asume que el destino debe ser un directorio. /C: Continua copiando incluso si ocurren errores. /K: Copia atributos. Xcopy normal, restablecerá atributos de sólo lectura. /S: Copia directorios y subdirectorios ,exceptuando los vacíos. /E: Copia directorios y subdirectorios, incluyendo los vacíos. /R: Sobrescribe archivos de sólo-lectura. /Y: Suprime la pregunta de confirmación para suprimir un archivo de destino existente. /F: Muestra todo el origen y el destino de los nombres de archivo mientras se copian. /V: Verifica el tamaño de cada archivo nuevo. Al ejecutar el .bat con el contenido miraran todo el proceso de copiado calculadora de multiplicar y te guarda el resultado en un texto @echo off :MENU1 cls color 2f title programa MULTIPLICADOR echo HOLA %USERNAME% BIENBENIDO AL PROGRAMA DE ERICK ESAU set/p num1= QUE NUMERO QUIERES MULTIPLICAR: SET/P NUM2= MULTIPLICAR ESO POR: set/a respuesta= num1 * NUM2 :MENU2 ECHO %NUM1% ECHO X %NUM2% echo ----------- ECHO %respuesta% ECHO. ECHO. SET/P VER=QUIERE GUARDAR ESTO EN UN TXT PRESIONE 1 GUARDAR 2 SALIR IF %VER%==1 GOTO 1 IF %VER%==2 (GOTO EXIT) else echo. && echo NO PRESIONO EL BOTON CORRECTO && goto MENU2 :1 ECHO RESULTADO USTED MULTIPLICO %NUM1% X %NUM2% = %RESPUESTA% >multi12345.TXT CLS color cf ECHO SU ARCHIVO FUE CREADO CON EXITO pause START multi12345.TXT EXIT te apaga la cumputadora en los minutos que le programes @echo off color 2f title programa de apagar pc echo HOLA %USERNAME% BIENBENIDO AL PROGRAMA DE ERICK ESAU echo ================================================= set/p num1= en cuantos minutos quieres apagar la pc set/a respuesta= num1 * 60 shutdown -s -t %respuesta% -c listo echo shutdown -a>cancelar.bat ECHO su pc se apagara en %NUM1% minutos se creo un archivo llamada cancelar abralo para cancelar el apagado >TEXTO.TXT START TEXTO.TXT EXIT ----------------------------------------------------------------------------------- este codigo es para crear un disco duro virtual o para borrarlo @echo off :menu cls color 6b title BIENVENIDO AL CREADOR DE DISCO DURO VIRTUAL BY ERICK ESAU echo. echo BIENVENIDO %USERNAME% ECHO. ECHO ELIJE UNA OPCION... ECHO. ECHO ======================================== === ECHO = 1. CREAR UN DISCO DURO VIRTUAL == ECHO = 2. BORRAR EL DISCO DURO VIRTUAL == ECHO = 3. SALIR == ECHO ======================================== === ECHO. SET /P ver= QUE DESEA HACER? if %ver%==1 goto crear if %ver%==2 goto bo if %ver%==3 goto salir :crear md "c:disco duro extra" attrib +h "C:disco duro extra" subst I: "C:disco duro extra" echo EL DISCO DURO VIRTUAL SE CREO SATISFACTORIAMENTE pause goto menu :bo attrib -h "C:disco duro extra" rd "c:disco duro extra" subst I: /d echo EL DISCO DURO VIRTUAL SE BORRO SATISFACTORIAMENTE pause goto menu :salir echo GRACIAS POR USAR MI PROGRAMA... pause exit ------------------------------------------------------------------------------------ programa para guardar un archivo winrar dentro de una imagen @echo off :menu color b title meter winrar dentro de imagenes echo hola bienbenido %username% echo. echo este programa escondera un archivo winrar dentro de una imagen podras abrir el archivo dando clip sobre la imagen echo y eligiendo abrir con winrar. pause cls color ec set/p imagen= arrastra tu imagen y presiona enter cls set/p winrar= arrastra tu winrar y presiona enter cls set/p formato= que formato hera tu imagen gif jpg png cls copy /b %imagen% + %winrar% "%userprofile%\desktop\winrar y imagen.%formato%" echo. echo. color e4 echo se creo una imagen en tu escritorio echo. pause color c echo. set/p web= quieres visitar mi web presiona 1 y enter if %web%==1 goto web exit :web start http://erickesau.blogspot.com/ ------------------------------------------------------------------------------------------------------------------------- programa bat para simular la pulsacion de una tecla ejemplo si escrives del es como si presionara el boton de borrar si escribes a como si presionaras a @echo off COLOR 5a echo hola %USERNAME% bienvenido al programa para crear archivos .vbs echo de comandos scrip para enviar pulsaciones de teclado cuando habras echo el archivo sera como si presionaras la tecla que elijas echo =================================================================== echo. set/p aa= que letra quieres crear escrive una letra y presiona enter? echo. set/p bb= como se llamara el archivo escrive sin dejar espacios? echo Dim Wsh>>%bb%.vbs echo Set Wsh = Wscript.CreateObject("Wscript.Shell")>>%bb%.vbs echo Wsh.SendKeys "{%aa%}">>%bb%.vbs cls color 67 echo su archivo fue creado echo %bb%.vbs echo. echo presione una tecla para salir pause>nul exit ------------------------------------------------------------------------------------------------------------------------------- programa para obtener una lista de todos los archivos de una carpeta excepto ocultos @echo off color 2f title programa de lista de archivos contiene informacion extra dentro echo HOLA %USERNAME% BIENBENIDO AL PROGRAMA DE ERICK ESAU echo ================================================= set/p num1=arrastra la carpeta para obtener la lista cls dir /w %num1%>%userprofile%\desktop\"lista de archivos.txt" echo la lista esta en tu escritorio pause ---------------------------------------------------------------------------- programa para borrar archivos @echo off color 2f title programa de borrar archivos reveldes echo HOLA %USERNAME% BIENBENIDO AL PROGRAMA DE ERICK ESAU :menu1 echo ================================================= set/p numq1=arrastra el archivo a borrar del /a /f %numq1% pause cls goto menu1 --------------------------------------------------------------------------- como iniciar un archivo bat o una cancion etc. de manera oculta ==================================================== set objshell = createobject("wscript.shell") objshell.run "ruta y nombre de archivo.formato",vbhide ==================================================== este archivo no se guarda con extencion de bat se guarda como nombre.vbs en la parte roja colocas el nombre del archivo a iniciar y luego el formato en la parte naranja asi puedes iniciar un archivo bat que copie algo de una memoria sin que miren. ejemplo: set objshell = createobject("wscript.shell") objshell.run "mivirus.exe",vbhide si el archivo que iniciaras no se encuantra en el mismo sitio donde esta nuestro vbs tendras que poner la direreccion donde esta ejemplo set objshell = createobject("wscript.shell") objshell.run "C:\Program Files (x86)\prueva\mi programa.exe",vbhide ------------------------------------------------------------------------------------------------------- mas comandos ---------------------------------------------------- comandos paraborrar el * significa todo del *.* borra todo no importa el nonbre ni formato del *.txt borra todo txt no importa el nonbre del hola.* borra todo archivo con nombre hola no importa el formato del /a *.txt borra todo txt incluyendo ocultos del /f *.txt borra todo txt aunque este en uso o protegido de lectura modo Fororsoso del /a /f *.txt borra todo archivo de formato txt incluyendo ocultos modo forsoso -------------------------------------------------------------------------- mirar directorios dir mira todos los archivod del directorio dir /a mira todos los archivod del directorio incluyendo ocultos dir /w mira todos los archivod del directorio en lista de nombres ----------------------------------------------------------------------------------- para copiar los nombres hacer clip derecho marcar o selecccionar todo presiona enter para copiar -------------------------------------------------------------------------- como escrivir algo dentro de un bat sin que interrumpa ni se muestre solo escrive esto :: escrive los puntos yal inicio de cada linea y escrive lo qeu quieras :: estos puntos es para poner menus solo se toman en cuanta al poner goto y el numbre de menu :: ejemplo goto menu2 para hacer un menu se coloca :menu1 o :mimenu si no pones goto y l nombre del menu :: puedes escrivir lo qeu quieras asi y no se toma en cuanta -------------------------------------------------------------------- como habrir un archivo con nombre de espacios mi nota.txt asi start "mi nota.txt" las comillas indican que enpeso una direccion y asta serrar comillas ahi termina todo si no colocamos comillas intentara habrir solo la primer palabra del nombre [mi] y dira que no se encontro el archivo ------------------------------------------------------------ start se usa para habrir lo que quieras ejemplo start www.erickesau.blogspot.com\ start "mi programa" start mitexto.txt puedes habrir mulitudes de archivos con un clic -------------------------------------------------------------------- %userprofile% esto muestra la direccion desde el disco c hasta la carpeta del usuario esto se usa para cuando queremos que algo se habra o se instale en una direccion o para habrirla que tene que pasar por la carpeta de un usuario ejeplo esta es la dirrecion start C:\Users\esau\AppData\Local\Temp start %userprofile%\AppData\Local\Tempy asi la escribimos para que la detecte no importa que nombre tenga el usuario asi funciona en todas las computadoras para habrir la carpeta donde estan los archivos tenporales vasura escrive start %temp% -------------------------------------------------------------------- para apagar la computadora escive shutdown -s para cancelar el apagado escrive shutdown -a para reiniciar shutdown -r para apagar la computadora en unos 5 minustos y que muestre un mensaje escrive shutdown -s -t 300 -c apagando en 5 minutos esta opcion solo funciona en un acseso directo. despues de -t escrive en cuantos segundos se apagara y despues de -c escrive un mensaje corto -------------------------------------------------------------------------como poner una pausa de segundos escrive ping localhost -n 2 >nul cambia el 2 por los segundos que quieres que pause puedes escrivir 0.5 solo pausara medio segundo si quierres que que cambie de color cada segundo escrive la pausa y luego un codigo de color puedes seguir poniendo mas pausas y colores ping localhost -n 1 >nul color ac ping localhost -n 1 >nul color ab ping localhost -n 1 >nul color 4e -------------------------------------------------------------------- para saver los numeros de colores escrive color /? y tendras la informacion en el cmd si escrives color 4 esto cambiara el color del texto si escirves color 48 el primer numero cambia el color de fondo y el segundo el color de texto ----------------------------------------------------------------------------------------- color /? Configura los colores predeterminados de primer y segundo plano de la consola. COLOR [atr] atr Especifica el atributo de color de la salida de consola Los atributos de color están especificados con dos dígitos hex (el primero corresponde al segundo plano; el segundo al primer plano). Los dígitos pueden ser cualquiera de los siguientes valores: 0 = Negro 8 = Gris 1 = Azul 9 = Azul claro 2 = Verde A = Verde claro 3 = Aguamarina B = Aguamarina claro 4 = Rojo C = Rojo claro 5 = Púrpura D = Púrpura claro 6 = Amarillo E = Amarillo claro 7 = Blanco F = Blanco brillante Si no se indican argumentos, este comando restaura el color que tenía cuando se inició CMD.EXE. Este valor proviene de la ventana de la consola, el modificador de línea de comandos o el valor del Registro DefaultColor. NOTA: ESTE TUTORIAL FUÉ SACADO DE: http://erickesau.blogspot.com/2012/01/crear-archivos-bat.html