Vous êtes sur la page 1sur 20

Batch de 0 a 100%

Este lenguaje(aunque no es un lenguage propiamente dicho) se puede usar para crear divertidos programas y utiles aplicaciones muy facilmente, pero mucha gente busca conocimiento de este lenguaje para crear sigilosos y letales virus, aunque en mi opinion creo que este lenguaje puede ser usado para fines mas constructivos, aunque no niego haber hecho programas maliciosos y mandarlos a personas Tambien uno cuando aprende un lenguaje, no se trata de leer la teoria un par de veces y hacer unos ejemplitos, se trata de continua practica y continuidad.

INDICE DE CAPITULOS:
0. Caracteres 1. Introduccion a archivos .bat 2. Creacion y edicion 3. Comandos basicos - 3.A Bien basico - 3.B Basico - 3.C Leer otros archivos 4. Variable, IF y goto basico - 4.A Variables - 4.B GOTO y CALL - 4.C IF - 4.D Mas variables e IF - 4.E Variables predeterminadas 5. Comandos de pocicionamiento, edicion de archivos/directorios y atributos. - 5.A Atributos - 5.B CD, DEL, RD y - 5.C Copiar, mover y renombrar 6. Comandos relacionados con el sitema - 6.A Apagar/reiniciar y formatear el sistema - 6.B Listado/eliminacion de procesos - 6.C Abrir cualquier cosa(aplicacion, pagina web, otro batch, etc.) 7. Comandos de internet - 7.A Informacion sobre conexiones a internet y liberacion/renovacion de estas - 7.B Pingear - 7.C Estadisticas de conexiones actuales a internet 8. Tunea tu batch - 8.A Encuadrados - 8.B Tamao de la ventana - 8.C Todos los caracteres que existen 9. Scripts utiles - 9.A Uso de argumentos - 9.B Numeros aleatorios

INDICE DE COMANDOS:
echo ... echo ...>/>>... (echo ... echo... )>/>>... pause title ... color xx msg ... cls type ... set ... set/a ... set/p ... goto ... :... call ... if ... if errorlevel ... if defined ... if exist ... attrib ... del ... rd ... cd ... dir ... copy ... xcopy ... move ... ren ... shutdown ... format ... tasklist ... taskkill ... tskill ... ipconfig ... ping ... netstat ... 0. Caracteres En este tutorial el "" se refiere a un enter, entre "()" las aclaraciones de lo que sucede, que no representa un enter o un espaciol y entre "--" la ventana, simboliza los margenes de la ventana; y si hay espacio es porq tiene que haber y si no lo hay es porq no tiene que haber . Tambien vale aclarar que es lo mismo "-" que "/". Osea "/a" es igual a "-a". Yo a veces uso unos y no otros pero porq estoy acostrumbrado a escribirlos con ese simbolo, ustedes usen el que les pinte.

1.

1. Introduccion a archivos .bat


Es un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensin *.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. Hay que aclarar Batch que no es un Lenguaje de Programacin. Es un archivo de cdigo que contiene comandos del, Shell de Windows, llamado MS-DOS, que pueden ejecutar desde Inicio->Ejecutar->"CMD", yo me refiero a el con el nombre de "Command Prompt".

3. Comandos bsicos
3.A Bien basico El primer comando que deberian aprender (el que aprendi yo primero ) es el comando ECHO y el PAUSE, este se puede usar de las siguientes maneras: echo MENSAJE = Esto hace que MENSAJE cuando habras el batch te aparecezca en una la linea que pusiste ese comando, tambien si escribes echo. sera como un enter. Si quieres decir MENSAJE y este contiene caracteres especiales tienes que escribir echo ^caracterespesial, si el "^" saldria un error. @echo off = Este comando deberia ser el comando de la primera linea si vas a hacer un batch, lo que hace es sacar el "Cdocuments and Settingstu_usuario>" que apareceria si el echo estuviera ON(que esta ON predeterminadamente). El arroba(@) en encabezando una linea significa que esa misma linea no va a tener echo, si lo pensas, como dije antes, el echo esta prendido predeterminadamente, entonces en la linea que desactivamos el echo si tiene echo, por eso le agregamos el arroba para sacar el echo. Es lo mismo escribir "@echo off" al principio que escribir todo el codigo con arroba al principio. pause = Aparecera en la linea "Presione una tecla para continuar..." y cuando presiones cualquier tecla ira al comando que le sigue, si no hay comando que le siga el batch se cerrara porq crashea. Ejemplos: 1) @echo off echo. echo ^<Holas me llamo ChupetinDeLimon^> echo. pause 2) echo. echo ^<Holas me llamo ChupetinDeLimon^> echo. pause Aparecerian: 1) --------------------------------------------------------------- Holas me llamo ChupetinDeLimon Precione una tecla para continuar...

---------------------------------------------------------------2) ---------------------------------------------------------------Cocuments and Settingstu_usuario>echo. Cocuments and Settingstu_usuario>echo Holas me llamo ChupetinDeLimon Cocuments and Settingstu_usuario>echo. Cocuments and Settingstu_usuario>pause Presione una tecla para continuar... ---------------------------------------------------------------(Si no hubieramos puesto los "^" antes del los "<" y ">" se hubiera producido un error. Cosas similares pasas con: | y &. Si queres poner un "^" tenes que escribir dos: ) 3.B Basico Otro comandos son TITLE, COLOR, MSG, CLS y echo CADENA>ARCHIVO.txt: title CADENA= CADENA se tranformara en el titulo de la ventana del batch remplazando "C:WINDOWSsystem32cmd.exe" msg /time CADENA * MENSAJE = Esto hara que le salte una ventana al usuario que va a decir MENSAJE por CADENA de segundos, si no se especifica CADENA va a estar hasta que alguien lo cierre. cls = Limpia la pantalla, borra todo lo escrito. echo CADENA>ARCHIVO.txt = significa que lo que va despues de "echo" sera escrito sera escrito en la primer linea de ARCHIVO.txt y si usamos ">>", significa que va despues de la ultima linea escrita. En caso de que el archivo no exista, sera creado. Tambien podemos poner muchas cadenas como si fueran lineas entre "(" y " " y despues los ">". color DIGITO1DIGITO2 = El primer DIGITO indica el segundo plano(el fondo) mientras que el segundo indica el primer plano(las letras). Los DIGITOs pueden que ser los dos una letra, los dos un numero o combinado, pero no puede ser la misma letra o numero dos veces,esto cambia el color del fondo y las letras del predeterminado(fondo negro, letras blancas) Lista de colores: 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 purpura_________D purpura claro 6 amarillo_________E amarillo claro 7 blanco-gris______F blanco blanco Ejemplo 1: @echo off title Un batch msg /time 5 * Este mensaje se va a cerrar en 5 segundos!! color 0a echo. echo No apretes nada que me borro!! pause cls echo.

echo Estoy de vuelta! pause Apareceria (aparecera una ventana nueva que dice "Este mensaje se va a cerrar en 5 segundos!!" y se cerraria en 5 secs, todo el batch estara escrito como si fuera Matrix xD) -Un batch------------------------------------------------------ No apretes nada que me borro!! Presione una tecla para continuar... (apretas una tecla) (se borra todo lo anterior y aparece como nuevo) Estoy de vuelta! Presione una tecla para continuar... ---------------------------------------------------------------Ejemplo 2: @echo off echo Primera linea!>loco.txt echo Segunda see>>loco.txt echo son todos gatos!>>loco.txt echo me aburri...>c:documentosloco.txt (echo hola echo como estas? echo Puto respostero! )>flash.txt (No aparecera nada, pero en el directorio en el cual el batch fue corrido se creara un archivo llamado loco.txt con todo lo que dice ahi. Fijense que en el ultimo se crearia un .txt en ese directorio, pueden hacer tambien un .vbs o .ini o los que quieran. El ultimo haria un .txt llamado flash en el lugar donde se ejecuto el programa que va a tener 3 lineas, cada una con el texto ingresado) 3.B Leer otros archivos TYPE = Es el comando que se usa para leer otros archivos mostrando su contenido. No tiene extenciones Ejemplo: @echo off type "c:windowsvbaddin.ini" pause (Este, en mi caso lo que haria es mostrar lo que esta adentro de ese archivo, que es [Add-Ins32] MTxAddIn2.RegRefresh=3 DTCFrameWork.AddIn=0 Esto lo pueden hacer con .bat, .txt, .ini, .xml, .html y muchos mas)

4. Variable, IF y goto basico

4.A Variables Las variables pueden asustarte al principio pero es cuestion de probar y vas a aprender enseguida. Las variables son un dato el cual lo determinamos con set NOMBREVAR=VALORVAR y nos referimos a el por %NOMBREVAR%. Tambien podemos hacer que el usuario determine la variable con el comando set/p NOMBREVAR=, cuando lo corras al batch cuando estes en esa linea vas a tener que determinar la variable. Tambien podes hacer set/p NOMBREVAR=MENSAJE y el usuario va a escribir despues del MENSAJE, OJO!!, la variable no cambio a MENSAJE!! Ejemplos: 1) @echo off echo. echo Hola me dirias tu nombre? set/p nombre= pause echo. echo %nombre% es un nombre muy choto! pause 2) @echo off echo. set/p nombre=Hola me dirias tu nombre? pause echo. echo %nombre% es un nombre muy choto! pause Apareceria: --------------------------------------------------------------- Hola me dirias tu nombre?(en esta linea ingresas la cadena del ej 2)ChupetinDeLimon (en esta linea ingresas la cadena del ej 1)WENCHA Presiones una tecla para continuar... WENCHA es un nombre muy choto! Presiones una tecla para continuar... ---------------------------------------------------------------4.B goto y call El comando goto es muy simple simplemente te manda, te pociciona en un directorio echo por el pregramador. Los directorios se hacen con :CADENA. Tambien hay etiquetas predeterminadas (las etiquetas es el nombre de lo que va despues del ":" como :eof, que lo que hace es ir a EndOfFile (en castellano: final del archivo) cerrando la aplicacion.

Ejemplo: @echo off :inicio echo. echo Estas en inicio por siempre!! pause goto inicio Apareceria: --------------------------------------------------------------- Estas en inicio por siempre!! Pulsa una tecla para continuar...(apretas) Estas en inicio por siempre!! Pulsa una tecla para continuar...(apretas) Estas en inicio por siempre!! Pulsa una tecla para continuar...(apretas) (y asi por siempre. Esto se llama un loop, en castellano bucle, ciclo repetitivo) ---------------------------------------------------------------Con el comando call se puede o llamar a un programa al batch o llamar una etiqueta. A diferencia del goto cuando termina el codigo no se cierra el batch sino que vuelve al lugar desde donde fue llamado. Otra diferencia, y la mas importante, es que se le pueden pasar parametros a la etiqueta (el uso de parametros se va a ver mas adelante en el capitulo 9). Ejemplo: @echo off :ini set/p nombre=Escribi tu nombre: call :funcion %nombre% echo. pause goto eof :nunca paso por aca echo NADIE ME QUIEREE :funcion echo %1 ganaste el premio al mas gil! :pero por aca si echo. echo A MI SI Apareceria: ---------------------------------------------------------------Escribi tu nombre: ChupetinDeLimon ChupetinDeLimon ganaste el premio al mas gil! (hijo de puta... ) A MI SI Pulsa una tecla para continuar...

----------------------------------------------------------------(fijense como al terminar el codigo del programa despues del "A MI SI " el programa sigue corriendo en la linea posterior al call) 4.C IF Ahora voy a explicar el comando de IF mas simples que es if CADENA1==CADENA2 (comando) else comando. Esto significa que si la CADENA1 es igual a CADENA2 va a hacer los comandos entre "()" y si no es igual va a realizar los comandos que estan despues del else. Las CADENAS pueden ser variables y comparar el resultado de una a otra o comparar el valor de una variable con un valor cualquiera. Tambien si hay muchos comandos IF seguidos solo el ultimo deberia ser if CADENA1==CADENA2 (comando) else comandoy los demas if CADENA1==CADENA2 comando. Si deseas hacer comando seguidos debes separarlos con "&&". Ejemplo utilizando variables, goto y IF: @echo off :inicio cls echo. echo Bienvenidos a inicio! set/p elijio=Si quieres continuar escribe "continuar", si quieres volver al inicio escribe "reiniciar" if %elijio%==continuar goto continuar if %elijio%==reiniciar (goto inicio) else cls && echo Comando incorrecto && pause && goto inicio :continuar echo. echo Entraste a 1!! pause Apareceria: --------------------------------------------------------------- Bienvenidos a inicio! Si quieres continuar escribe "continuar", si quieres volver al inicio escribe "reiniciar"(si escribes reiniciar se limpiar todo y volvera a preguntarte lo mismo) (si esbribes continuar..) Entraste a 1!! Presiones una tecla para continuar... (si escribes otra cosa que no sea esos comandos)Comando incorrecto Pulsa una tecla para continuar...(al pulsarla volveras al inicio) ----------------------------------------------------------------4.D Mas variables e IF Cuando determinas una varieable tambien la puedes determinar con el comando set/a EXPRECION. Esta exprecion puede ser suma/resta/etc. de variables o suma/resta/etc. de valores. Cuando usas el comando if CADENA1==CADENA2 comando el "==" tambien puese ser remplazado por los siguientes: NEQ = no igual LSS = menor

LEQ = menor o igual GTR = mayor GEQ = mayor o igual Ejemplo: @echo off echo. set/p edad=Cuantos anos tenes?? set/a edadposterior= edad + 5 if %edad% GEQ 18 goto mayor if %edad% LSS 18 goto menor :mayor echo. echo Eres mayor! y dentro de 5 aos tendras %edadposterior% anos! pause exit :menor echo. echo Lo siento prohibido para pendejos!! y dentro de 5 aos tendras %edadposterior% anos! pause exit Apareceria: --------------------------------------------------------------- Cuantos aos tenes?? Eres mayor! Pulsa cualquier tecla para continuar...(esto si ingresas un nro igual o mayor a 18) Lo siento prohibido para pendejos!! Pulsa cualquier tecla para continuar...(esto si pones un nro menor que 18) ---------------------------------------------------------------(Si ponen el caracter "" no va a salir sino va a salir el simbolo de mas/menos de matematica k es un + arriba de un - en un mismo caracter. Tambien si escrien sus edad con otra cosa que no sea numero en el set/a va a tomarlo como 0) Tambien tiene otras funciones if: if not CADENA1==CADENA2 (comando) else comando = Si esa condicion no es asi(not) se ejecurata comando. Los IFs diferencian mayusculas de minusculas, osea "HOLA" no es lo mismo que "hola" o que "HoLa", para vitar esto despues del IF le ponemos /i, de esta manera "A" es igual a "a" if exist ARCHIVO1 (comando) else comando = Si existe ARCHIVO1 se ejecutara el comando. if errorlevel 1 (comando) else comando = Si intentas correr un comando en un archivo batch y se produce un error puedes usar este comando para aceptar el error y hacer algunas acciones. if defined variable (comando) else comando = Si la variable que pusiste esta definida es verdadera, comando entre parentesis, sino pasa al else. La variable que ponen ahi no va entre "%", va con el nombre asi solito. Ejemplo 1: (imaginate que el archivo file.txt no exixte(el comando copy))

@echo off :inicio copy file.txt file2.txt if errorlevel 1 goto noesta goto END :noesta echo file text>file.txt goto inicio :END echo Chau!! pause o @echo off :inicio if exist file.txt (copy file.txt file2.txt) else goto noesta goto END :noesta echo file text>file.txt goto inicio :END echo Chau!! pause 4.E Variables predeterminadas

Algunas variables vienen predeterminadas en el sistema. Si vos llamas una variable con el mismo nombre que una predeterminada la reemplazas. Estas son las mas comunes que se usan: ALLUSERPROFILE = C documents and settingsAll Users HOMEDRIVE = C: ProgramFiles = C:Archivos De Programa SystemRoot = C:Windows Windir = C:Windows Username = ChupetinDeLimon UserProfile = C documents and settingsChupetinDeLimon Date = dd/mm/aaaa Time = hh/mm/ss Random = 0 - 32767 Dense cuenta que por ejemplo su username debe ser Administrador o el que ustedes les ayan puesto. Estas variable varian en cada compu pero si yo hago un batch que diga "echo %username%" cuando o abra a mi me va a decir ChupetinDeLimon, a otro el que tenga en su compu, de esta manera si queremos, por ejemplo, borrarle todo del sistema ponemos: cd %windir% del *.* /f (mas adelante se explican esos comandos)

5. Comandos de pocicionamiento, edicion de archivos/directorios y atributos

5.A Atributos Los atributos de un archivo se pueden especificar po el comando ATTRIB opciones RUTA ARCHIVO, las opciones posibles son las siguientes: (+ establece el atributo y - borra el atributo) R = Solo lectura del archivo A = Archivo de almacenamiento S = Archivo del sistema H = Archivo oculto Ejemplo: @echo off cd C documents and SettingsBunge BrosEscritoriobatchs attrib +r +a +s +h colores.bat exit (probablemente el archivo que le pusieron esos atributos desaparesca, para poderlo ver van a tener que ir a una carpeta cualquiera y en la barra de herramientas(arriba) entrar a Herramientas>>Opciones de carpeta>>Solapa "Ver" y cambiar a "Mostrar todos los archivos y carpetas ocultas" y mas abajo sacar la opcion "Ocultar archivos protegidos del sistema operativo", despues deberia aparecer) o si quieren esos atributos a todos los archivos del directorio @echo off cd Cocuments and Settingsuser_nameEscritoriobatchs attrib +r +a +s +h *.* exit (en esta clase de ejemplos no aparecera nada solo se abre y cierra en nanosegundos ) El simbolo "*" en muchos lenguajes de programacion significa un comodin, si pusieran *.txt serian todos los de esa extencion y si ponen a*.* seria todos los que empiesan con a van a adquirir esos atributos, por eso si quieres que solo los archivos con extencion .txt y .bat ponrias: @echo off cd Cocuments and Settingsuser_nameEscritoriobatchs attrib +r +a +s +h *.txt attrib +r +a +s +h *.bat exit 5.B CD, DEL, RD y DIR DEL = Sirve para borrar archivos o directorios. Se recomiendo usar simepre el DEL. Despues del DEL se pueden agrgar las opciones /f(que significan que fuerza la eliminacion del archivo) y /q(que no pide confirmacion del usuario). RD o RMDIR = Elimina un directorio, /s para sacar subdirectorios, archivos, todo y /q para hacerlo de forma silenciosa, osea que no te aparescan mensajes como "ha sido borrado exitosamente". DIR = Te muestra los archivos y directorios de donde estas posicionado. Para que te los muestre con determinado orden agregamos /o y pegado a la o una N(nombre a>z), S(tamao 1>9), E(extencion a>z) y D(fecha, el mas antiguo primero. Si queremos por nombre pero en vez de que la "a" este primero y "z" ultimo, agregamos un "-" en el medio de la "o" y la letra, esto es

lo mismo para los demas. No hago ejemplos de esto porque es bastante simple. CD o CHDIR = Cambia el directorio actual a uno nuevo(el directorio por defecto desde un archivo .bat es la direccion del propio archivo). Si su batch esta en "C ocuments and Settingsuser_nameEscritoriobatchs" y quiere, por ejemplo, borrar un archivo de la carpeta del Winamp ponria: Ejemplo: 1) @echo off cd "C:Archivos de programaWinamp" del /f /q winamp.exe exit (NO RECOMINEDO QUE LO COPIEN Y LO CORRAN!!) 2) (o si quieren borrar todo lo que hay en el, inclusive el directorio) @echo off RD "C:Archivos de programaWinamp" /s /q 3) (Algunos archivos no se pueden borrar ya que estan protegidos para eso si quieren borrar todo del Winamp pondrian...) @echo off cd "C:Archivos de programaWinamp" attrib -r -a -s -h *.* del /f /q *.* 5.C Copiar, mover y renombrar COPY = Sirve para copiar archivos. Si el archivo existe pide confirmacion para el sobreescribirlo para evitar esto y sobreescribirlo ponemos la extencion /y. Tambien podemos unir archivos de texto con el simbolo "+". XCOPY = Para copiar directorios(carpetas). Le podemos agregar /E para que copie el directorio y subdirectorios tambien, /C para seguir copiando aun cuando ocurran errores, /h para que copie tambien archivos ocultos y del sistema y /y lo mismo que con el copy . Ejemplo: @echo off @echo off echo. copy "C:Juegosun algo.bat" "c:musicaotro algo.txt" /y copy "mira este.txt"+"y este otro.bat" vualaaa.txt xcopy "C:JuegosChupetinDeLimon1" "c:musicaChupetinDeLimon cuato?" /E /C /H /Y pause (Este copiaria el archivo "un algo.bat" a el directorio de musica con el nombre de "otro algo" y cambiandole la extension a .txt. El segundo copiaria las palabras que tienen adentro de los dos y ponerlas compretamente seguidas y el archivo que pusste primero priemro y el segundo despues en vualaaa.txt. El tercero copiaria wencha1 de ese directoria a musica con el nombre de "wencha cuanto?" con las caracteristicas ya explicadas) MOVE = Mueve archivos y tambien le cambia el nombre a directorios. Se usa el /y, ya explicado. REN o RENAME = Para renombrar archivos.

Ejemplo: @echo off move "c:hola.txt" "e:windows" /y move c:capoo c:quien ren "c:cuantas cosas locasmi batch.bat" hmmmm.bat ren "c:cuantas cosas locasmi batch2.bat" "aaa a a aa .bat" (El primero moveria hola.txt a alla, se entiende. El segundo le cambiaria el nombre a la carpeta capoo a quien. El tercero le cambia el nombre a "mi batch" a hmmmm, el segundo lo mismo con la excepcion de que como el nombre tiene espacion hay que poner comillas, eso es con todos los directorios, cadenas y archivos si hay espacion van comillas, sino no hacen falta.)

6. Comandos relacionados con el sitema

6.A Apagar/reiniciar y formatear el sistema SHUTDOWN = Sirve para apagar/reiniciar el sitema y cerrar secion. /l para cerrar secion, /s para apagar y /r para reinicia (obviamente no podes los tres juntos...). Tambien estan -t para indicar dentro de cuanto, en segundos y predeterminadamente 30 segundos, -c "CADENA" (maxima extencion 127 caracteres) para agregarle un comentario a la ventana que te indica el tiempo y -f para forzar el comando sin que te caguen los "no enviar" o errores que puedan frenar el comando. Y ultmo y vital por si lo usas y no sabe como sacarlo shutdown -a, asi solito, para cancelar un apgado/reiniciado/cerrar secion que este en curso. Este ventana que te aparece diciendo que se te apaga o lo que sea solo se puede sacar con el -a, es el unico metodo. FORMAT Disco = Seguramente lo habran visto en una pelicula o video o a alguien nombrar "format c:". Bueno para los que no sabes lo que hace es formatear, osea borrar completamente todo todo todo, de nu disco seleccionado. Disco puede ser c: o d: ponele o un usb que pongas cualquiera. Y la extencion /q para realisar un formateo rapido. Ejemplo: @echo off format c: shutdown /s -t 3600 -c "SUFRI MIENTRAS SE TE FORMATEAAAAA!!!" -f (NO VAYAN A COPIAR Y CORRER ESTO. Lo que hace es formatear el disco c: y te salta una ventana fija por una hora (3600 segundos) con el mensaje ese que cuando pase la hora se te va a apagar la compu. Para que se te apague instantaneamente tenes que poner -t 0 sino toma el predeterminado(30 secs)) 6.B Listado/eliminacion de procesos TASKLIST = Sirve para mostrar una lista de los procesos activos en el sistema y tiene muchas extenciones. Asi solito te va a mostrar el nombre, el PID(Process ID) y el uso de memoria en el momento. Con /m muestra ademas llos modulos DLL que usa cada tarea. Con /v ademas te mustra el nombre de usuario(tu usuario, SYSTEM, servicio local, servidio de red, etc.) y el estado (la mayoria seguro "Activo". Con /svc te muestra los servicios que esta usando el proceso. Y ultimo pero importante con /FI podes filtrar todo, los nombres de los procesos, el

estado, los modulos, etc., poniendo eq o ne (Equal, NotEqual, igual, no igual). Los nombres en ingles son IMAGENAME para el nombre, STATUS para el estado, MODULES para los modulos, SERVICES para los servicios, y PID para el PID. TASKKILL = Terminar procesos atravez del nombre o el PID. Podes poner /IM o /PID, para referirte a ese proceso con el nombre o con el PID, que lo podes obtener con el Tasklist. Ademas si le agregas /f lo fuerza a cerrar y /t cierra ese y todos los secundario que se iniciaron en el. TSKILL = Simplemente termina un proceso. Dense cuanta que este es mas facil pero no tiene filtros ni las otras opciones. Ejemplo: @echo off tasklist /FI "IMAGENAME eq f*" (de ahi sacas el PID) taskkill /PID 1552 /f taskkill /IM msnmsgr.exe tskill explorer.exe taskkill /IM *.* /f (El primero te muestra todos los procesos que el IMAGENAME(nombre) empiecen con f. El segundo elimina el proceso con el PID 1552 forsosamente. El tercero te saca el msn. El anteultimo te elimina el explorer, y el ultimo te elimina todos los procesos forzadamente ) 6.C Abrir cualquier cosa(aplicacion, pagina web, otro batch, etc.) START = Sirve para abrir cualquier cosa, desde una pagina web, hasta otro batch, hasta un .pdf. Para elejir de donde se abre el archivo(o lo que sea) ponemos /d seguido del directorio. /MIN y /MAX se usan para abrir la ventana minimizada o maximisada, respectivamente. Tambien podes hacer que se abra con diferentes prioridades, a mayor prioridad mayor sera el consumo de tu compu, pero andara mas rapido(solamente el programa lo demas mas lento si no te da la compu). Las prioridades son estas, de menor prioridad a mayor: /LOW(bajo), /BELOWNORMAL(debajo de lo normal), /NORMAL,/ABOVENORMAL(por ensima de lo normal), /HIGH(alto) y /REALTIME(tiempo real). Tambien podemos hacer que nuestro archivo batch se paralize hasta que lo que abrimos no se cierre, esto se logra ingresando /wait a nuestro comando. Tambien podemos abrir un archivo batch y pasarles parametros, esto se ve a fondo en el capitulo 9. Ejemplo: @echo off start /d "C:Batchesun batch loco.bat" /max /abovenormal start /d "C:Archivos de programaMozilla Firefox" firefox.exe /min /realtime start google.com start www.google.com /max (En el primero abriria un batch maximizado y con prioridad por encima de lo nomal. El segundo abriria el mozilla minimizado con altisima(maxima) prioridad, dense cuenta que es lo mismo poner el archivo dentro de las comilla o fuera de ellas. El tercero no nos andaria porque windows pensaria que es un archivo con extencion .com, para evitar esto tenemos que escribirle el "www", en caso de que no tenga pongale el "http://".)

7. Comandos de internet
7.A Informacion sobre conexiones a internet y liberacion/renovacion de estas IPCONFIG = Sirve para realisar diferentes acciones sobre su conexion, o obtener informacion sobre ella. Si lo pones asi solo te muestra tu direccion de IP, tu mascara de subred, tu puerta de enlace predeterminada y tu sufijo de conexion especifica DNS. Se le puede agregar /all y ahi te va a mostrar mucha mas informacion. Tambien /release y /renew, que libera tus conecciones y las renueva respectivamente. Para los que saben de DNS tambien pueden usar /displaydns que muestra el contenido de la cache de resolucion DNS. Ejemplo: @echo off echo Como te llamas? pause>nul ipconfig /release *con cls echo jajaja que me importa tu nombre! echo ahora te quedas sin internet!!! pause (Aca en el comando de /release se lo aplicas a todas las conexiones que empiesen con "con" como "Conexion de area local" ajajaj". Dense cuenta que despues del pause hay un ">nul", lo que hace esto es que no se vea el "Presione una tecla para continuar...", se lo podes agregar a cualquier comando, si se lo pones por ejemplo a un copy, no te va a aparecer el "x archivo/s copiado/s". Muy util para trabajar en segundo plano jeje.) 7.B Pingear PING = Sirve para hacer uno o mas pings a una pagina web, direccion IP o una compu de la red local. Se le agrega -n x para que pingee x veces la direccion. Si queres que sea infinitamente hasta que vos lo pares(apretando ctrl+c) usa -t, y si queres ver las estadisticas y seguir con el pingeo es ctrl+inter. Podes usar /l x para aumentar el tamao de los paquetes que predeterminadamente esta en 32(todo en bytes). Tambien podes cambiarle el TTL(TimeToLive, tiempo de vida) de los paquetes, de 1 a 255, predeterminadamente 128, con el sufijo -i x. Ejemplo: 1) @echo off ping -n 7 /l 510 -i 150 google.com ping -n 7 /l 510 -i 150 66.59.120.1 pause 2) @echo off echo hola! ping -n 4 localhost >nul echo como estas? pause echo chupala

exit (En el dos, como explique antes, le agregue el ">nul" lo qe causa que haga el preceso de pingeo oculto, generando un retraso entre que aparece "el hola!" y el "como estas?".) 7.C Estadisticas de conexiones actuales a internet NETSTAT = Se usa para ver una lista de conexiones. Si lo pones solo te muestra los protocolos, direccion local, direccion remota y el estado, en forma de tabla(igual que el tasklist pero en vez de procesos conexiones). Se puede usar -a para que ademas de las conecciones TCP muestra las del protocolo UDP. -b, muy util, muestra el ejecutable de donde la conexion se inicia, a esta extencion ademas se le puede agregar /v(solo utilizable con -b antes) para ver los modulos DLL que usa la conexion. Con -n en vez de que en la columna "Direccion Remota" te aparesca cosas como "eze03s01-in-f19.google.com:https" te aparescan en formato de IP uerto, en este caso 209.85195.19:443 (este es un ejemplo propio, prueben ustedes para entenderlo bien). Con -o, ademas muestra el PID(ProcessID, ID del proceso) de cada conexion, pueden utilizar el taskkill /PID x para eliminar las conexiones por ejemplo. Por ultimo /s muestra las estadisticas(paquetes enviados, paquetes recibidos descartados/procesados, activos/pasivos abiertos, etc.) por protocolo; IPv4, ICMPv4, TCP/UDP para IPv4. Ejemplo: @echo off netstat netstat /b /v netstat /a /b netstat /a /b /o netstat /b /n netstat /a /b /n /o /v netstat /a /n /o /s (Todos darian informacion distinta, el anteultimo daria la maxima informacion sobre cada conexion, y el ultimo solamente rescataria el /s ya que ese se usa para listar entonces te va a listar las estadisticas y los otros son como nada.)

8. Tunea tu batch

8.A Encuadrados Hay ciertos caracteres que al escribirlos en el notepad vemos algo y despues corremos el batch y son otra cosa. Bueno algunos de esos caracteres se puede usar para hacer encuadrados o dibujos con un simple batch. Aca hay un ejemplo de los dos tipos de encuadrado que hay en batch. REMPLAZA LOS "_" POR ESPACIOS, " " Ejemplo: @echo off title ChupetinDeLimon color 0a

echo. echo echo __________________ echo _ChupetinDeLimon___ echo __________________ echo echo. echo echo __________________ echo __ChupetinDeLimon_ echo __________________ echo pause>nul

8.B Tamao de la ventana Hay muchas veces que cuando haces un batch deseas que la ventana tenga mas o menos lineas(para abajo) o columnas(para la derecha). Ingreando @mode con cols=X1 lines=X2 podemos setear esto, donde X1 es el ancho y X2 es el alto. El tamao predeterminado es columnas 82 y lineas 25. Tambien vale decir que al ingresa el @mode... ademas de cambiar las dimensiones hace la funcion de "cls", osea que limpia la pantalla, borra todo lo que estaba antes. Ejemplo: @echo off :ini set/p ancho=Ingresa el ancho set/p alto=Ahora el alto @mode con cols=%ancho% lines=%alto% echo Ancho actual: %ancho% echo Alto actual: %alto% echo. goto ini

8.C Todos los caracteres que existen Bueno aca les dejo una lista completa de todos los caracteres que se pueden ingresar en batch. En el notepad muchos aparecen como cuadraditos pero al correrlos en batch aparece la imagen. Por eso deje numueros por linea asi sabes cual de todos los cuadraditos es. Ejemplo: @echo off echo 1 echo BEEP echo 2

echo 3 echo 4 ! " # $ %% ^& ' ( echo 5 ) * + , - . / 0 1 2 echo 6 3 4 5 6 7 8 9 : ; ^< echo 7 = ^> ? @ A B C D E F echo 9 G H I J K L M N O P echo 10 Q R S T U V W X Y Z echo 11 [ ] ^ _ ` a b c d (para poner el ^, hay que poner dos seguidos. No lo pongo sino sale ) echo 12 e f g h i j k l m n echo 13 o p q r s t u v w x echo 14 y z { ^| } ~ echo 15 echo 16 echo 17 echo 18 echo 19 echo 20 echo 21 echo 22 echo 23 echo 24 echo 25 echo 26 echo 27 pause>nul 9.A Uso de argumentos Imaginense que quieren un script que le pasen dos numeros y un operador(+ - * /) y haga la cuenta. Esto tranquilamente lo podrian hacer mas facil de otras maneras, pero es un ejemplo que demuestra perfectamente como hacer scripts. Imaginense que ponen el codigo que viene en "c:mis batchprimer script.bat". Vamos al Command Prompt y ponemos "start "c:mis batchprimer scirpt.bat "80 / 5". Ahi le estamos diciendo que le pase "80", "/", y "5", como los parametros %1, %2 y %3, respectivamente. El .bat deberia tener el siguiente codigo(los comentario en un batch se escriben despues de dos ":" seguidos, tambien pueden escribir REM comentario, pero si en el comentario pones caracteres reservados se produce un error, de la otra manera no): Ejemplo: @echo off if %1==0 goto error set a=0 if %2 NEQ + set/a a=a+1 if %2 NEQ - set/a a=a+1 if %2 NEQ / set/a a=a+1 if %2 NEQ * set/a a=a+1 if %a%==4 goto error if %3==0 goto error :inicio set num1=%1 set operacion=%2

set num2=%3 pause set/a resultado= num1 %operacion% num2 echo %resultado% pause>nul exit :error echo Error, el primer temino debe ser unicamente "+" "-" "*" o "/". echo Los otros dos deben ser numeros mayores a 0. pause>nul exit Muy bien. Ahora pruebenlo. Como podran ver su batch toma los parametros que pusieron despues del batch y los asigna en varible con numeros(%1, %2...), la variable %0 seria el batch, en este caso %0=primer script.bat. Al principio comprueba que el %1 argumento/parametro sea un numero mayor a 0(las letras y otros caracteres toman el valor de 0), lo mismo con el %3. Con el %2 comprobamos que sea un operador de esos cuatro. Si no es ninguno la variable "a" va a tener el valor de 4 haciendo que vallan a error. La solapa "error" esta al final, por eso es muy importante poner el comando "exit" en la solapa "inicio", si no lo pusieramos la compu seguiria leyendo el codigo e iria a la sola "error" que es la que le sigue. Podemos hacer muchas cosas con esto, por ejemplo copiar archivos: Ejemplo: @echo off copy %1 %2 /y >nul exit Imaginate que el script esta en "C:Mis scriptssegundo scipt.bat" escribimos en el Command Prompt(Incio>> ejecutar>> cmd): start /d "C:Mis scripts" "segundo script.bat" "c:archivosdocumento a copiar.pdf" "c:mis archivos nuevosdocumento copiado.pdf" Al principio parece complicado de entender pero si lo analizas bien te das cuenta que despues del "/d" va el directorio del programa a correr, despues el nombre del programa, y despues los argumentos a pasar. Imaginense la cantidad de cosas que pueden hacer con esto! 9.B Numeros aleatorios Algunas veces nosotros presisamos usar numeros aleatorios. Como ya explique en el capitulo de las variables que tiene windows, hay una variable, %RANDOM%, que nos devuelve un numero entre 0 y 32767(esto significa que es un numero de tipo entero(integer) que tiene ese rango, los byte tienen hasta 255 y los long hasta 2millones algo creo). Pero yo quiero, por ejemplo entre 0 y 10. Uno normalmente podria hacer algo como esto: Ejemplo: @echo off :inicio set/a numero=%RANDOM% if %numero% GTR 10 goto inicio echo %numero% pause>nul

Esto, claro, funcionario pero, pensa que necesitamos un numero de 1 a 10 y el %RANDOM% llega a 32767, tardaria mucho en tocar. Para evitar esto vamos a la calculadora y, pongamos que queremos de 0 a 10, hacemos 32767(el mayor numero del %RANDOM%) y lo dividimos por el mayor numero que queremos tener(en este caso 10) y le sumamos 1. 32767 / 11 = 2978,82. Ahora a este resultado(2978) le sumamos 1, llegando a 2979. Si dividimos 32767 por 2979 es igual a = 10,999328633769721383014434373951, osea casi 11, pero en batch no hay comas y no redondea sino que se queda con el numero antes de la coma(10 en este caso). Ahora vamos a nuestro codigo y agregamos lo siguiente(y sacamos algo): Ejemplo: @echo off :inicio set/a numero=%RANDOM% / 2979 ::Obteniendo un valo maximo de 10.999(en batch si hay decimales los saca, osea 10.01 y .99 es igual a 10) echo %numero% pause>nul De esta manera el numero es istantaneo, pero a diferencia de la otra manera hay un 0,0001% menos probabilidad que salga 10 que otro numero , que cagada no? Si alguien no entendio la logica de este algoritmo preguntenme. Despues de un rato pensando en un algoritmo general para no tener que hacer las cuentas todo el tiempo, aca les un codigo para sacar cualquier rango de numeros, entre 0 y 1000 o 5623 y 7544: Ejemplo: @echo off set/p rang_men=Rango menor= set/p rang_may=Rango mayor= :inicio1 cls set contador=0 echo De %rang_men% a %rang_may% puede tocar estos numeros: :inicio2 set/a numero1= ( 32767 / ( (rang_may - rang_men) +1) ) - 1 set/a numero_final= ( %RANDOM% / numero1 ) + rang_men echo %numero_final% set/a contador= contador + 1 ping localhost -n2 >nul if %contador%==20 goto inicio1 goto inicio2 Otra forma mucho mas simple,set/a n=%RANDOM%%10+0. En este caso saldria un numero entre 9 y 0. 2 cosas a tener en cuenta son que primero si o si va el numero mas grande y que el lmite del numero aleatorio va a ser igual al numero que pongas vos menos 1.

Vous aimerez peut-être aussi