You are on page 1of 24

Noticias: Ayuda a mantener organizados los foros utilizando en tus post los iconos correspondientes: preguntas, para aportes,

para temas resueltos Para Por favor ingresa o regstrate.


Sie m pre Ingre sar

Ingresar con nombre de usuario, contrasea y duracin de la sesin


B u s ca r. . .

Inicio

Ayuda

Ingresar

Registrarse

Foros pOrtal Hacker Programacion Programacin en general Batch (Moderadores: HolyKnight, JaAViEr, LauBuru, bolivianito) Tutorial Batch (todos los niveles) por Maxx93 anterior prximo Pginas: [1] Ir Abajo
I M P RI M I R

Autor

Tema: Tutorial Batch (todos los niveles) por Maxx93 (Ledo 1317 veces)

0 Usuarios y 1 Visitante estn viendo este tema.

maxx93
Me das tu password?

Tutorial Batch (todos los niveles) por Maxx93


en: 18 de Febrero de 2011, 10:22:55 pm

Tutorial de Programacion en Batch (todos los niveles)


por maxx93
Mensajes: 234 Sexo: Lo imposible es la ignorancia de lo posible

Contenidos
Citar 1.Introduccin 2.Variables 2.1.Recortar una variable 3.Bucles 4.C omando IF 5.C omandos Basicos 6.Shutdown 7.C all 8.Parmetros 9.Shift 10.Attrib 11.Redirecciones 12.Manejo del Registro (C uidado usando mal el registro puede provocar hasta la muerte del sistema) 12.1.Agregar clave al registro 12.2.Borrar clave del registro 12.3.C onsultar clave del registro 12.4.Exportar archivo .reg de una clave 12.5.Importar un archivo .reg al registro 12.6.C omparar dos claves del registro

12.6.C omparar dos claves del registro 13.Errorlevel 14.AT 15.SUBST 16.ASSOC 17.C AC LS 18.Setlocal y Endlocal 19.FOR 20.C omprimir y Descomprimir archivos si tenemos Winrar instalado 20.1.Para comprimir archivos 20.2.Para descomprimir archivos21.C ambiar tamao de la consola 21.C ambiar tamao de la consola 22.Activar o desactivar firewall de windows 23.Tablas 24.C omandos de Red 25.Hacer que el bat espere un tiempo

1. Introduccin
Batch es un lenguaje scripting, y para su utilizacin utiliza el Smbolo del Sistema de Windows (DOS). Los lenguajes tipo scripting, se utilizan para escribir script [ para mas informacin http://es.wikipedia.org/wiki/Script_(inform%C3%A1tica) ] estos script son utilizados para automatizar tareas. Para empezar a programar en batch solo necesitaremos un programa el Bloc de Notas, o cualquier otro que edite archivos de texto llano, (por favor no usar el Word, ni similares) uno muy bueno tambin es el notepad++ que es el que uso. Antes de empezar a crear nuestros scripts vamos a aprender a utilizar la consola, esta va a ser la cual interpretara los cdigos que ingresemos. Espesemos Para abrir la consola vamos a Men Inicio>Ejecutar (o la tecla del logotipo de Windows + r), all escribiremos cmd.exe y luego Enter. Se nos ha abierto una ventana negra, con un guin bajo titilando este es el cursor, a la derecha del cursor tenemos el Prompt, en mi caso es el:

C:\Documents and Settings\Administrador> El Prompt nos muestra donde estamos ubicados virtualmente, lo que vemos es una ruta y un >, el > nos dice que hay termina la ruta y comienza la orden que luego escribiremos. La ruta esta compuesta por [Unidad]:\Directorio\... Los dos puntos dicen que lo anterior es la unidad o el disco, en mi caso C y lo que sigue van a hacer los directorios delimitados por una barra invertida \ no confundirla con /. Las ordenes que uno ingresara a la consola, estarn compuestas de la siguiente manera [Comando] [Parmetros] Ahora vamos a hacer que debajo del prompt se escriba una lnea que diga Hola

Ahora vamos a hacer que debajo del prompt se escriba una lnea que diga Hola Mundo, para hacerlo escribiremos Echo Hola Mundo En este caso echo es el comando y Hola Mundo son los parmetros (serian dos parmetros, los parmetros son delimitados por espacio, un espacio indica donde termina un parmetro y empieza otro) El comando Echo muestra un texto y adems oculta o visualiza el prompt. Para ocultar el prompt escribiremos echo off y para visualizarlo echo on. Para dejar un rengln en blanco escribiremos echo. (sin comillas) Para obtener la ayuda de un comando, escribiremos [Comando] /? Hay dos tipos de comandos los internos y los externos, los internos son todos los comandos que vienen integrados con la consola y los externos son archivos que funcionan como comandos. Para obtener la lista de los comandos internos, escribiremos el comando Help. Una vez con toda esta teora, empecemos a crear nuestros scripts. Vamos al Bloc de Notas, y escribiremos lo siguiente
Cdigo: (dos) [Seleccionar]

Echo Hola Mundo Pause Y lo guardaremos como *.bat, en el * va el nombre del archivo que queremos [Asi se guarda un script batch]. Luego buscamos el archivo .bat y le damos doble click. Se nos ha abierto la consola diciendo Hola Mundo, y abajo Presione una tecla para continuar. . ., al presionar una tecla se nos cierra la ventana. El comando Pause sirve para insertar una pausa, y no dejar que siga corriendo el script, si no estuviera el script se cerraria, puesto que al no haber mas ordenes debajo el script finaliza. Esto fue una demostracin de un script. Ahora volvamos a la consola. Para movernos entre los directorios usaremos el comando cd Ej.: Ir a una carpeta anterior usamos: cd.. Ir al disco raiz usamos: cd\ Ir a una carpeta dentro de la que estamos usamos: cd carpeta Ir a una ruta especifica usamos: cd Disco:\Directorio\Subdirectorios

Para listar directorios usamos el comando dir, para ver los parmetros escribimos en la consola dir/? y nos dara la ayuda de este comando. Por ejemplo para ver los archivos que tenemos en el escritorio primero vamos al escritorio Como en la carpeta que estoy esta la carpeta escritorio uso cd Escritorio y luego escribimos dir /a

2.Variables
Para ver todas las variables usamos el comando set Si escribimos set y luego enter veremos todas las variables. Estas son las variables mas usadas:
Citar %ALLUSERSPROFILE% C :\Documents and Settings\All Users (Ruta de la carpeta con la configuracin para todos los usuarios)

(Ruta de la carpeta con la configuracin para todos los usuarios) %APPDATA% C :\Documents and Settings\{usuario}\Datos de Programa (Ruta de la carpeta con datos de programa) %C OMPUTERNAME% (Nombre del equipo) Nombre del equipo

%C OMSPEC % C :\Windows\System32\cmd.exe ( Ruta al intrprete de comandos) %HOMEDRIVE% Unidad donde estan los datos del usuario (C :) (Unidad en la que se encuentra los datos de usuario) %HOMEPATH% \Documents and Settings\{usuario} (Ruta a la carpeta del usuario actual) %USERPROFILE% (incluye unidad) C :\Documents and Settings\{usuario}

%PATH% C :\Windows\System32\;C :\Windows\ (Rutas en la que se buscan ejecutables) %PATHEXT% .C OM; .EXE; .BAT; .C MD; .VBS; .VBE; .JS ; .WSF; .WSH. (Extensiones de archivo ejecutables) %PROGRAMFILES% C :\Archivos de programa (Ruta de la carpeta archivos de programa) %PROMPT% $P$G (Formato del intrprete de comandos) %SYSTEMDRIVE% C: (Unidad en la que se ha instalado Windows) %SYSTEMROOT% y %WINDIR% C :\Windows (C ontiene la carpeta de Windows) %TEMP% y %TMP% C :\DOC UME~1\{usuario}\LOC ALS~1\Temp (Ruta de la carpeta Temp) %USERNAME% Ej.:C omputer (Nombre de usuario actual) %DATE% (Fecha actual) %TIME% (Hora actual) 31/12/2009

00:00:00,00

%C D% C :\ (C arpeta actual con su ruta completa) %ERRORLEVEL% 0o1 (C digo de salida del comando anterior) %RANDOM% 32767 (Nmero aleatorio de 0 a 32767)

Las variables nos sirven para indicar un valor que puede ser un numero una ruta o lo que queramos, en donde escribimos la variable estamos escribiendo en realidad el valor de la variable. A las variable se las seala con %% ejemplo para indicar la variable homepath escribiremos %homepath%. Por ejemplo podemos listar el contenido del escritorio sin estar en el, usando: dir /a "%homedrive%%homepath%\Escritorio", por las dudas siempre que nos referimos a una ruta usaremos comillas dobles "". Para establecer una variable hacemos Set variable=valor

Set variable=valor En variable el nombre de nuestra variable y en valor lo que queremos que valga la variable En el bat para que la variable la defina el usuario hacemos
Citar Set /p variable=

No hay valor porque el valor lo define el usuario, el que abra el .bat Para definir variables como el resultado de sumas restas multiplicaciones divisiones Ej.:
Citar Set /a variable=numero+numero Set /a variable=numero-numero

Tambien si una variable es un valor numero podemos operar con ella por ejemplo
Cdigo: (dos) [Seleccionar]

Set /a variable=%random%*%random% En este lenguaje Batch no tenemos soporte para comas, asi que si hacemos 3/2 no nos dara 1.5 sino 1 (redondea hacia abajo) Para mas informacin sobre variables set/?

2.1.Recortar una variable


Podemos tomar un trozo de una variable por ejemplo: Hay una variante llamada original y su valor es abcdefghijk Si queremos solo tener las letras fghi, tenemos que ver cuantas letras hay detras de la f en este caso serian 5 (abcde) y cuantos caracteres ocupa lo que queremos ver en este caso serian 4 (fghi).
Citar %nombrevariante:~numerosdecaracteresanteriores,numerosdecaracteresqueabarca%

En el ejemplo anterior seria (nos mostraria solo fghi)


Cdigo: [Seleccionar]

%original=~5,4% Ahora queremos mostrar a partir de la c incluida


Cdigo: [Seleccionar]

%original:~2% Ahora queremos mostrar los ultimos 3 caracteres


Cdigo: [Seleccionar]

%original:~-3% Ahora queremos mostrar todo menos los ultimos tres caracteres
Cdigo: [Seleccionar]

%original:~0,-3% Para hacer el signo ~ lo hacemos con alt+126

3.Bucles
Un bucle o ciclo, en programacin, es una sentencia que se realiza repetidas

Un bucle o ciclo, en programacin, es una sentencia que se realiza repetidas veces a un trozo aislado de cdigo, hasta que la condicin asignada a dicho bucle deje de cumplirse. [Mas info: http://es.wikipedia.org/wiki/Bucle_(programaci%C3%B3n)] Veamos como se usan los bucles: Vayamos al block de notas y escribamos
Cdigo: (dos) [Seleccionar]

@echo off :ini Echo esto es un bucle Goto :ini Y lo guardamos como ya dijimos. Diran como aparecio tantas veces la esto es un bucle si yo tan solo lo escribi una sola vez, ahi esta el bucle. Al escribir :bucle Nos referimos que ah es un punto de partida y al poner cuando queramos goto :bucle lo que hacemos es volver al punto de partida, claro que si es algo asi el bucle no terminara nunca y tendremos que cerrar la consola a mano. Analizemos @echo off: @ hace que el comando actual no tenga eco, a eco le decimos que aparezca el prompt, y el echo off desactiva el eco, osea nunca veremos el prompt a menos que escribamos echo on.

4.Comando IF
El comando if dice que si algo ocurre, en consecuencia se lleven a cabo algunas cosas o si algo no ocurre que se lleven a cabo otras cosas. Veamos:
Citar If valor==valor (echo C oincide) else (echo No coincide)

Esto nos dice que si valor es igual a valor escriba coincide sino escriba no coincide. Podemos comparar variables y valores Ej.:
Cdigo: (dos) [Seleccionar]

If %homedrive%==C: (echo Disco local C) else (echo El disco local es diferente a C)

Ademas de comparar si una variable es igual a otra podemos comparar si es mayor, menor, mayor o igual, menor o igual, diferente.
Citar EQU - igual NEQ - no igual LSS - menor que LEQ - menor que o igual GTR - mayor que GEQ - mayor que o igual

Ej.:
Cdigo: (dos) [Seleccionar]

If 4 gtr 5 (echo Logramos lo imposible) else (echo 4 no es mayor que 5)

Ademas de usar un comando en la condicion podemos usar varios:


Cdigo: (dos) [Seleccionar]

Cdigo: (dos) [Seleccionar]

If 5 lss 7 ( Echo 5 es menor que 7 Echo 7 es mayor que 5 Pause) else (echo.) Ejemplo codigo integrando if y set:
Cdigo: (dos) [Seleccionar]

@echo off Echo 2 mas cuanto me da 5? [Escribe solo el numero] Set /p rta= Set /a suma=2+%rta% If %suma%==5 (echo Has acertado) Pause Exit En la condicion podemos sacar la parte de else (), si no queremos que pase nada si se contradice a la condicion. Al usar el if, podemos indicar si la variable x esta definida o no, y segn eso podes realizar diversas acciones, veamos unos ejemplos: Para indicar si x esta definida que escriba correcto y sino que escriba incorrecto
Citar If defined x (echo correcto) else (echo incorrecto)

Para indicar si x no esta definida que escriba incorrecto y sino que escriba correcto
Citar If not defined x (echo incorrecto) else (echo correcto)

Podemos verificar la existencia de un archivo o directorio


Citar if exist "%windir%" (echo existe) else (echo no existe)

Podemos tambien verificar la inexistencia de un archivo o directorio


Citar If not exist "C :\musica.mp3" (echo no existe) else (echo existe)

Crearemos un menu con if, set y goto @echo (dos) [Seleccionar] Cdigo: off Echo Menu Echo. Echo 1. Escribe la palabra batch Echo 2. Que es esto? Echo 3. Salir Echo Presione el numero de la opcion y luego enter Set /p opc= If %opc%==1 (goto:escribe) If %opc%==2 (goto:quees) If %opc%==3 (exit) :escribe Echo Batch Pause

Pause Exit :quees Echo -Esto- es una palabra Pause Exit Se preguntaran para que sirve exit, sirve para terminar la consola. (Que quede en claro que para ver el codigo en vida lo guardamos como un .bat con el block de notas o un editor en texto llano)

5.Comandos Basicos
Para explorar cada comando usamos el nombre del comando seguido por /?
Citar C ls - Borra la pantalla Type rutaarchivo Escribe en la pantalla un archivo Del rutaarchivo Borra un archivo C opy rutaorigen rutafinal C opia un archivo Move rutaorigen rutafinal C opia un archivo Ren rutaorigen nuevonombre Renombra un archivo Title Nuevotitulo C ambia el titulo de la consola Md rutadirectorio C rea una carpeta Rd ruta directorio - Borra una carpeta Tasklist Lista los procesos actuales Taskkill /f /im proceso.extension C ierra un proceso Taskkill /pid numerodepid C ierra un proceso indicando el numero de pid (Que es un proceso? http://es.wikipedia.org/wiki/Proceso_(inform%C 3%A1tica)) Fc rutaarchivo1 rutaarchivo2 C ompara dos archivos Find cadenadetexto rutaarchivo Busca en un archivo una cadena de texto Findstr cadenadetexto rutaarchivo Busca una cadena en varios directorios Format Formatea una unidad Start Inicia una aplicacin

6.Shutdown
Con shutdown podemos apagar, reiniciar y anular un equipo en una cantidad de segundos Para apagar el equipo en 30 segundos: Shutdown s t 30 Para reiniciarlo: Shutdown r Para anularlo: Shutdown a Para forzar el cierre de aplicaciones sin advertir usamos f Ejemplo de reinicio forzando el cierre de aplicaciones, en 5 segundos con un comentario
Citar Shutdown r f t 5 c "comentario"

7.Call
Se usa para llamar a un archivo por lotes o parte del archivo por lotes actual Ej.: Call ruta del archivo por lotes Para llamar a una parte del archivo Ej.: Call :bucle Pueden agregarse parmetros colocandolos despus de lo que queremos llamar ej: call:bucle 123 Aca enviamos con el bucle el parametro de valor 123.

8.Parmetros
Un parmetro es un tipo de variable que es recibida por una funcin, procedimiento o subrutina. (Mas info http://www.alegsa.com.ar/Dic/parametro.php) Los parmetros pueden ser de fabrica o los podemos poner nosotros. Por ejemplo:
Cdigo: [Seleccionar]

Call "archivo.bat" abcdef En este ejemplo al abrir el archivo se iniciara con un parametro con valor abcdef. El bat que se habra puede comprobar si esta se parametro en su ejecucin y segn esto actuar con el if. Por ejemplo: Entre las primeras lineas de archivo.bat esta escrito este fragmento de codigo:
Cdigo: (dos) [Seleccionar]

Set var=%1 If %var%==abcdef (echo El parametro abcdef ha sido recibido correctamente)

El parametro %0 es la direccion del bat, este esta definido predeterminado, osea, si el archivo bat lo abrimos en el disco c, el parametro %0 sera C:\archivo.bat Ahora enviaremos a :ini una ruta como parametro
Cdigo: (dos) [Seleccionar]

Call:ini "%homedrive%%homepath%\Escritorio\archivo.bat" pause :ini Echo %~f1 Echo %~p1 Echo %~n1 Echo %~x1 Echo %~s1 Echo %~a1 Echo %~t1 Echo %~z1 Goto:eof El goto:eof se usa para terminar la funcion, en este ejemplo tomamos datos de la ruta que figura en el parametro 1.
Citar %~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 tamao del archivo %1. (Extraido de http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevot132924.0.html#ixzz1DX1eJtnh)

9.Shift
Cambia la posicin de los parmetros. Por ejemplo si tenemos parmetros: a [%1], b [%2], c [%3], d [%4], e [%5], f

Por ejemplo si tenemos parmetros: a [%1], b [%2], c [%3], d [%4], e [%5], f [%6]
Cdigo: [Seleccionar]

Shift /1 Los parmetros cambian: b [%1], c [%2], d [%3], e [%4], f [%5]


Cdigo: [Seleccionar]

Shift /2 Los parmetros cambian: a [%1], c [%2], d [%3], e [%4], f [%5] Para entender mejor es como si se borrara el parametro del modificador y se reasignaran los numeros de los parmetros segn el orden.

10.Attrib
Cambia o muestra los atributos del archivo Para mostrar usamos: Attrib archivo Para modificar con el + agregamos atributos y con el - sacamos. R Atributo de slo lectura del archivo. A Atributo de archivo de almacenamiento. S Atributo de archivos del sistema. H Atributo de archivo oculto. Por ejemplo, para ocultar un archivo y darle atributos de sistema hacemos:
Cdigo: [Seleccionar]

Attrib +h +s "archivo" Y para volver a tenerlo visible hacemos:


Cdigo: [Seleccionar]

Attrib -h "archivo"

11.Redirecciones
Para escribir un archivo de texto que diga abc hacemos:
Cdigo: [Seleccionar]

Echo abc>"rutadelarchivotxt" Para agregar otra linea a ese archivo sin sobreescribirlo hacemos:
Cdigo: [Seleccionar]

Echo def>>"rutadelarchivotxt" Podemos tambien ocultar la salida de un comando con una redireccion Ej.: ping n 1 localhost>nul El >nul se usa para ocultar el texto de salida Tambien podemos redireccionar a una impresora con >prn Para redireccionar a un puerto paralelo PRN, LPT1, LPT2, LPT3, para redireccionar a un puerto de serie COM1, COM2, COM3, etc.

12.Manejo del Registro (Cuidado usando mal el registro puede provocar hasta la muerte del sistema)

sistema)
Esto es util si queremos agregar un programa al inicio de nuestro sistema incluido el propio bat, o hacer cambios sin necesidad de entrar al registro.

12.1.Agregar clave al registro


Citar reg add "clave" /v "Nombre de la entrada" /t "tipo de entrada" /d "datos de la entrada"

Los tipos de entradas son: REG_SZ REG_MULTI_SZ REG_DWORD_BIG_ENDIAN REG_DWORD REG_BINARY REG_DWORD_LITTLE_ENDIAN REG_NONE REG_EXPAND_SZ ] Ejemplo:
Cdigo: [Seleccionar]

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v "ejempl

12.2.Borrar clave del registro


Citar reg delete "clave" /v "Nombre de la entrada" /f(no pide confirmacion)

Ejemplo:
Cdigo: [Seleccionar]

reg delete "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v "eje

Si queremos sobrescribir una entrada ya existente, hacemos como si agregaramos una nueva clave pero ponemos el parametro /f que no pide confirmacion.

12.3.Consultar clave del registro


Citar reg query "clave" /v "Nombre de la entrada"

Pueden usarse los modificadores /ve Consultar el valor de fabrica /s Consulta subclaves y valores | /ve][/s] Ej.:
Cdigo: [Seleccionar]

reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" Consultamos la clave "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Ru

12.4.Exportar archivo .reg de una clave


Citar reg export "clave" archivo en donde se exportara el .reg

Ej.:
Cdigo: [Seleccionar]

reg export "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" %homed En el Escritorio se nos creara el archivo HKLMRun.reg con los valores de la clave "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"

12.5.Importar un archivo .reg al registro


Citar reg import archivo .reg

Ej.:
Cdigo: [Seleccionar]

reg import %homedrive%%homepath%\Escritorio\HKLMRun.reg Se nos importara el archivo HKLMRun.reg del escritorio al registro.

12.6.Comparar dos claves del registro


Citar reg compare "clave1" clave2

Puede agregarse los modificadores /v nombre de la entrada Para comparar una entrada especifica /ve Para comparar el valor de fabrica Ej.:
Cdigo: [Seleccionar]

12.7.reg compare "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" " Compara los valores de las claves de HKLM con HKCU

13.Errorlevel
La variable errorlevel es muy util para saber si algun comando no se llevo a cabo, en caso de haber un error en procesar un comando, errorlevel sera 1 si sale todo bien el errorlevel sera 0, al no encontrar un comando sera 9009. Ej.:
Cdigo: [Seleccionar]

Abcdef Echo %errorlevel% Pause Aca nos dara un errorlevel de 9009 ya que abcdef no es un comando, a menos que tengamos un comando llamado abcdef xD.

que tengamos un comando llamado abcdef xD. Ej2:


Cdigo: [Seleccionar]

Cd "C:\abcdef" Echo %errorlevel% Errorlevel nos devolvera 1 a menos que tendramos una carpeta en el c llamada abcdef xD, si la tenemos errorlevel sera 0.

14.AT
At sirve para crear tareas programadas: At hh:mm proceso.exe At hh:mm /Interactive proceso.exe Al usar el /Interactive permite la interaccion con el usuario, si no se utilizase el /Interactive se ejecutaria el proceso pero en segundo plano. Para borrar una tarea programada hacemos At numerodelatarea /delete En numero de la tarea ponemos el numero identificador de la tarea, que nos da el cmd cuando creamos la tarea. Todo lo ejecutado en el at, saldra del usuario system, lo que nos dara una escala en privilegios.

15.SUBST
Asigna una letra a una ruta Subst W: %homedrive%%homepath%\Escritorio Aca se crea un disco W para acceder a la ruta %homedrive%%homepath%\Escritorio Para borrar esta unidad virtual usamos Subst W: /D

16.ASSOC
Muestra o modifica las asociaciones de extensiones de archivos, para mostrar usar solo assoc para modificar Assoc .extension=tipodearchivo Ej.: assoc .txt=batfile Asi los archivos bat se verian como archivos de texto.

17.CACLS
Muestra o modifican el acceso de los usuarios por sobre los directorios o archivos. Para denegar el acceso a un usuario en este caso nuestro usuario actual
Cdigo: [Seleccionar]

Cacls "directoriooarchivo" /e /d %username% Para permitir el acceso a un usuario en este caso nuestro usuario actual
Cdigo: [Seleccionar]

Cacls "directoriooarchivo" /e /g %username%:f Para denegar el acceso a todos los usuarios


Cdigo: [Seleccionar]

Cacls "directoriooarchivo" /e /d todos Para permitir el acceso a todos los usuarios

Para permitir el acceso a todos los usuarios


Cdigo: [Seleccionar]

Cacls "directoriooarchivo" /e /g todos:f

18.Setlocal y Endlocal
Setlocal indica que se esta a punto de realizar algunos cambios en las variables de entorno en el script y debe mantenerse el contexto actual, al usar setlocal las variables quedan como estan actualmente, despus del setlocal por mas que se modifique a las variables si se usa endlocal, las variables vuelven como estaban antes. Ej.:
Cdigo: (dos) [Seleccionar]

Set x=abcdef Setlocal Set x=xsakxal Echo %x% Endlocal Echo %x% Pause La variable x se modificara estando dentro del setlocal, pero el endlocal la vuelve a la normalidad. Ademas setlocal admite modificadores ENABLEEXTENSIONS / DISABLEEXTENSIONS Habilita o deshabilita las extensiones. Por ejemplo
Cdigo: (dos) [Seleccionar]

Setlocal enableextensions echo errorlevel se definira si las extensiones estan habilitadas echo %errorlevel% Endlocal Pause En el ejemplo errorlevel nos dio 0, porque echo no dio error y estaba definido porque se habilitaron las extensiones. Otro Ejemplo
Cdigo: (dos) [Seleccionar]

Setlocal disableextensions echo errorlevel no se definira si las extensiones estan deshabilitadas echo %errorlevel% Endlocal Pause Es este ejemplo errorlevel no esta definido, porque las extensiones estan deshabilitadas. Tambien soporta los modificadores ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION Esto sera explicado junto con for.

19.FOR
El for es uno de los comandos, mas complejos y de mayor uso. Empecemos: [Nota: Si estamos en la consola usaremos %a pero si estamos en un bat usaremos %%a]

un bat usaremos %%a]


Cdigo: [Seleccionar]

For /l %%a in (1,1,8) do (echo Repite esto 8 veces) En este codigo observemos que con el modificador, /l indicamos que va a haber una secuencia de numeros en la parte in (), en in tendremos numero inicial, paso, numero final en el ejemplo contara de 1 en 1 empezando desde el 1 hasta el 8, si ubiera sido 1,2,8 for contaria de 2 en 2 empezando desde el 1 hasta el 8. Por cada vez o cada numero que cuenta se ejecuta el codigo que esta en el do por eso en el ejemplo se repite 8 veces la frase. Ademas la variable %%a tendra el valor del numero que se este contando. Ej.
Cdigo: [Seleccionar]

For /l %%a in (1,1,10) do (echo %%a) Aca contara hasta 10 y devolvera los numeros del 1 al 10. El %%a puede reemplazarse con %%b o %%elcaracterquequeramos
Cdigo: [Seleccionar]

For /f %%a in ('type archivo.txt') do (echo %%a) Cuando usamos el modificador /f indicamos que lo que devuelva el comando de adentro del in, se aplicara en el do. El comando de adentro del in se lo limita con comillas simples ' '. Al escribir las lineas de recien escribira en la pantalla el archivo archivo.txt dividido por lineas. Por el type recibira la linea y por el echo la escribira. Con el modificador /f podemos usar Delims especifica un grupo de delimitadores Skip saltea las cantidad de lineas que indiquemos Tokens del texto extraido toma las colmnas que indiquemos Veamos ejemplos:
Cdigo: [Seleccionar]

For /f "delims=" ('type archivo.txt') do (echo %%a) Aca escribira el archivo.txt tal cual por lineas, a diferencia del codigo anterior que iba a tener errores en las lineas del archivo pues se cortarian.
Cdigo: [Seleccionar]

For /f "skip=3" ('type archivo.txt') do (echo %%a) Saltea las primeras 3 lineas del archivo
Cdigo: [Seleccionar]

For /f "tokens=2,4" ('tasklist') do (echo %%a) Del tasklist nos escribira las columnas 2 y 4, osea el pid y el uso de memoria
Cdigo: [Seleccionar]

For %%a in (a b c) do (echo %%a) Aca nos escribira las letras a b c, esto quiere decir que pasa por el do con la letra a en la variable %%a luego pasa devuelta al do pero ahora la variable %%a valdra b y luego cuando pase nuevamente por el do %%a sera c. En el for no puede guardarse una variable que cambia, asi que al principio el archivo escribiremos setlocal enabledelayedextension. Esto habilitara la expansin de variables retardada. De esta manera podran guardarse variables en el for, aunque no de la forma %variable% sino !variable! Ej.:
Cdigo: (dos) [Seleccionar]

Set n=0 For /f "skip=4 tokens=1" %%a in ('type archivo.txt') do (set /a n=!n!+1) Al saber cuantas veces pasaron por el do las lineas del archivo quedara almacenada en la variable n el numero de lineas del archivo.txt

almacenada en la variable n el numero de lineas del archivo.txt Si queremos poner un for adentro de otro, no debemos usar las mismas variables del tipo %%x. Un ejemplo correcto de for adentro de for seria:
Cdigo: (dos) [Seleccionar]

For /l %%a in (1,1,5) do ( For /l %%b in (1,1,8) do ( Echo %%a-%%b))

20.Comprimir y Descomprimir archivos si tenemos Winrar instalado


20.1.Para comprimir archivos
start winrar.exe a "\ruta1\rutax\archivo.rar" "\ruta1\rutax\archivo.txt" a se usa para indicar que se va a comprimir -ibck se usa para indicar que la accion va a ser ejecutada en modo background -p(seguido del texto, sin parentesis) se usa para ponerle contasea al rar -ep1 se usa para excluir a todos los directorios que contienen a ese archivo -df se usa para eliminar ficheros tras la compresion ejs:
Cdigo: (dos) [Seleccionar]

Start Winrar.exe a -ep1 "\Documents and Settings\Administrador\Escritorio\Archivoscom "\Documents and Settings\Administrador\Escritorio\Archivoqueseracomprimido.*" start winrar.exe a -ep1 "\Documents and Settings\Administrador\Escritorio\Maxi.rar" "\Documents and Settings\Administrador\Escritorio\Hola.txt" -ibck

start winrar.exe a -ep1 -pcasa -df "\Documents and Settings\Administrador\Escritorio\ "\Documents and Settings\Administrador\Escritorio\Hola.txt" -ibck (en este ultimo ejemplo la contrasea seria la palabra casa y se eliminaran los ficheros tras la compresion)

20.2.Para descomprimir archivos


start winrar.exe x "\ruta1\rutax\archivo.rar" "\ruta1\rutax\" x se usa para indicar que se va a descomprimir ejs:
Cdigo: [Seleccionar]

Start Winrar.exe x "\Documents and Settings\Administrador\Escritorio\Archivoscomprimi "\Documents and Settings\Administrador\Escritorio\" start winrar.exe x "\Documents and Settings\Administrador\Escritorio\Maxi.rar" "\Documents and Settings\Administrador\Escritorio\" -ibck

start winrar.exe x -pcasa "\Documents and Settings\Administrador\Escritorio\Maxi.rar" "\Documents and Settings\Administrador\Escritorio\" -ibck (en este ultimo ejemplo descomprimiria usando la cantrasea casa)

[Todos los comandos del winrar se encuentran en la carpeta del programa, en el archivo rar.txt]

21.Cambiar tamao de la consola

21.Cambiar tamao de la consola


Podemos cambiar el tamao de la consola de esta manera:
Cdigo: [Seleccionar]

MODE CON: COLS="cantidadcolumnas" LINES="cantidadlineas" En cantidad de columnas, ponemos la cantidad de columnas (sin comillas) y en cantidad de lineas ponemos la cantidad de lineas (sin comillas) Ej.:
Cdigo: (dos) [Seleccionar]

mode con: cols=50 lines=25 PD.: El tamao de una celda es de 12 x 8 pixeles, un cuadrado seria por ejemplo:
Citar mode con: cols=48 lines=32

22.Activar o desactivar firewall de windows


Para activar
Cdigo: [Seleccionar]

netsh firewall set opmode enable Para desactivar


Cdigo: [Seleccionar]

netsh firewall set opmode disable Netsh nos ofrece varias opciones para la configuracin de una red. Para mas informacin netsh/?

23.Tablas
Modelos de tablas:
Citar Modelo 1 C odigo: echo echo echo echo Modelo 2 C odigo: echo echo echo echo echo Modelo 3 C odigo: echo echo echo echo echo echo echo Modelo 4

Modelo 4 C odigo: echo echo echo echo echo

Estas tablas las habia sacado de taringa hace mucho, pero no me acuerdo el enlace.

24.Comandos de Red
Citar (extraido de http://www.elhacker.net/ProgramacionBat.html#comandosred) FTP Iniciar el cliente ftp IPC ONFIG parmetros Mostrar las caractersticas de configuracin de IP /all -> muestra toda la informacin de configuracin /release adaptador -> libera la ip del adaptador especificado /renew adaptador -> renueva la ip para el adaptador especificado /flushdns -> purga la cach de resolucin de dns /registerdns -> actualiza las conexiones dhcp y vuelve a registrar los nombres dns /displaydns -> muestra el contenido de la cache de resolucin dns Netstat C omando para comprobar el estado actual de la red netstat netstat netstat netstat netstat -a Mostrar todos los puetos y conexiones -n Mostrar nmero de puerto y direcciones -r Mostrar la tabla de rutas -s Mostar estadsticas por protocolo -p tcp/udp Mostrar las conexiones activas TC P o UDP

Nslookup Utilidad para interrogar dns Ping Enviar paquetes icmp a un determinado destino. ping ping ping ping -t ping al host hasta que se pare -a resolver direcciones en nombres de host -n numero Nmero de peticiones a enviar -l tamao tamao del buffer

Telnet Inicia una sesin telnet al host especificado en el puerto especificado. Si el puerto se omite se usa el 23. Tracert Tracear el destino hasta llegar a la ruta indicada.

25.Hacer que el bat espere un tiempo


Podemos hacerlo de varias formas: Podemos hacer un ping a localhost y en el numero de peticiones a enviar ponemos los segundos de espera. Ejs:
Cdigo: [Seleccionar]

Cdigo: [Seleccionar]

:verif Ping/a ver=0x%tiempo% set -n 1 localhost>nul

goto:eof Espera un segundo y se oculta el texto que aparece al ejecutar ping. :veriff Cdigo: [Seleccionar] if %errorlevel% neq 0 (goto :ayuda) Ping -n 5 127.0.0.1>nul call:code %tiempo% >nul 2>&1 Espera 5 segundos y se oculta el texto que aparece al ejecutar ping. Podemos endlocal poner 127.0.0.1 o localhost que es lo mismo. Localhost es nuestra pc, aunque goto:eof estemos sin conexin funcionara. :code Podemos tiempoterm=%time:~0,2%*3600+%time:~3,2%*60+%time:~6,2%+%tiempo% set /a crear un comando que haga la espera. Aca les dejo uno que hice: set /a hs=%tiempoterm%/86399 Cdigo: (dos) [Seleccionar] set d=%date:~0,2% :ini set /a tiempoact=%time:~0,2%*3600+%time:~3,2%*60+%time:~6,2% if %d% neq %date:~0,2% ( set /a tiempoterm=%hs%*-86399+%tiempoterm% set d=%date:~0,2% if %hs% leq 0 (set /a hs-=1)) if %tiempoterm% geq %tiempoact% (goto :ini) goto:eof :ayuda echo Espera. Inserta una pausa de n segundos echo Creado por maxx93 echo. echo Sintaxis: echo Espera Segundos echo. echo Ej.: Espera 777 goto:eof Lo guardan como espera.bat en C:\Windows\System32 Para utilizarlo es muy sencillo, ponemos:
Cdigo: [Seleccionar]

Espera "cantidaddesegundos"

Gracias por leer el tutorial. Espero que les haya servido. Saludos a todos!!!
En lnea

Twitter @maxialba

Tutorial Batch (todos los niveles) por Maxx93


C uidemos el medio ambiente. Sin l no vivimos!

bcn_marc_18
Me das tu password? Mensajes: 210

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #1 en: 05 de Marzo de 2011, 12:29:40 am

Muchisimas gracias tio, eres un crack!! me ha servido mucho, grax


En lnea

odyseo
C PQUE??

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #2 en: 05 de Marzo de 2011, 07:45:45 am

es muy bueno el tutorial y las explicaciones se entienden muy bien y estan sencillas. realmente me parecio muy bueno el tutorial y me ayudo mucho a introducirme en la programacion batch. gracias por el aporte
En lnea

Mensajes: 6 Sexo:

Cpu1
Me das tu IP?

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #3 en: 18 de Marzo de 2011, 06:09:17 am

Esta muy bien el tutorial pero en el capitulo 12 donde claves del registro intento agregar una pero me dice: ERROR: Acceso denegado. Que hago, como soluciono este problema?
Mensajes: 33 Sexo: Programador batch y aprendiendo VB En lnea

JaAViEr
"El ignorante, afirma; el sabio, duda y reflexiona" Moderador

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #4 en: 18 de Marzo de 2011, 06:42:14 am

Debes tener permisos de Admin


En lnea

ACORTADOR DE URL'S AQU Index De cdigos ! ! Ac! Torneo de Ofuscacin de Cdigos CPH Aqu !

Mensajes: 7,587 Sexo:

Cpu1
Me das tu IP?

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #5 en: 18 de Marzo de 2011, 07:50:34 am

Y como puedo conseguirlos en un ordenador ageno


En lnea

Mensajes: 33 Sexo: Programador batch y aprendiendo VB

.:.IlcOn14.:.
Si te metes con C PH te metes conmigo

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #6 en: 18 de Marzo de 2011, 08:13:20 am

Debes hacerte una cuenta de administrador


En lnea Fuck Youuuuuuuuu (8)(8)

Mensajes: 1,027 Sexo: Simplemente Pro

mr.blood
Si te metes con C PH te metes conmigo Mensajes: 1,147 Sexo: Buscando el saber. Porque el saber, es PODER.

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #7 en: 20 de Marzo de 2011, 10:32:49 am

Un tuto muy completito

Una chincheta no estaria mal, para este trabajo tan bueno. Sa1uDoS
En lnea

No seas tonto, juega a lo mejor: www.starsempire.net Interprete Brainfuck Online: http://brainfuck.tk/ Interprete de Brainfuck en C : http://www.portalhacker.net/index.php/topic,127086

DsKaTeR
C PQUE?? Mensajes: 9

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #8 en: 24 de Marzo de 2011, 03:51:34 am

Muy bueno el tuto, mira tengo una duda, Como le puede hacer para un .bat que le quite atributos a un pendrive
Cdigo: [Seleccionar]

Attrib /d /s -r -h -s *.* la cuestin es que quiero que la unidad sea seleccionable dentro del batch es decir que si la memoria es la letra f esta se ponga por el usuario f: o la letra que sea y luego de seleccionarla se le quiten los atributos al pendrive; agradezco mucho cualquier colaboracin.
En lnea

maxx93
Me das tu password?

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #9 en: 24 de Marzo de 2011, 07:43:02 am

Gracias a todos por comentar!!! Eso queda en la buena volundad de algun mod si quiere ponerle un pinche bienvenido sea Con respecto a tu pregunta DsKaTeR aca hice un code
Cdigo: (dos) [Seleccionar]

Mensajes: 234 Sexo: Lo imposible es la ignorancia de lo posible

@echo off set n=1 echo Borrar atributos de un disco estraible echo. echo Unidades Extraibles Disponibles: for %%a in (E F G H I J K L M N O P Q R S T U V W X Y Z) do ( if exist "%%a:/" (echo %%a: Listo&set n=0)) if %n%==1 (echo No se encuentra ninguna unidad extraible... Presione una tecla para s echo. echo Escriba la letra de la unidad de la que se quieran borrar los atributos set /p let= if not exist "%let%:\" (cho No se encuentra la unidad extraible seleccionada... Presi echo Eliminando atributos... Espere... for /f "delims=" %%a in ('dir /a /b /s "%let%:\"') do (attrib -r -a -s -h "%%a") cls echo Atributos de la unidad %let% eliminados. echo. echo Presione una tecla para salir... pause>nul exit Gracias y Saludos!!!
ltima modificacin: 24 de Marzo de 2011, 07:46:04 am por maxx93 En lnea

Twitter @maxialba

Tutorial Batch (todos los niveles) por Maxx93


C uidemos el medio ambiente. Sin l no vivimos!

DsKaTeR
C PQUE?? Mensajes: 9

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #10 en: 26 de Marzo de 2011, 03:29:51 pm

Muchas gracias por la ayuda, est perfecto.


En lnea

DsKaTeR
C PQUE?? Mensajes: 9

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #11 en: 27 de Marzo de 2011, 12:28:32 pm Cita de: maxx93 en 24 de Marzo de 2011, 07:43:02 am Gracias a todos por comentar!!! Eso queda en la buena volundad de algun mod si quiere ponerle un pinche bienvenido sea C on respecto a tu pregunta DsKaTeR aca hice un code
Cdigo: (dos) [Se le ccionar]

@echo off set n=1 echo Borrar atributos de un disco estraible echo. echo Unidades Extraibles Disponibles: for %%a in (E F G H I J K L M N O P Q R S T U V W X Y Z) do ( if exist "%%a:/" (echo %%a: Listo&set n=0)) if %n%==1 (echo No se encuentra ninguna unidad extraible... Presione una tecla par echo. echo Escriba la letra de la unidad de la que se quieran borrar los atributos set /p let= if not exist "%let%:\" (cho No se encuentra la unidad extraible seleccionada... Pr echo Eliminando atributos... Espere... for /f "delims=" %%a in ('dir /a /b /s "%let%:\"') do (attrib -r -a -s -h "%%a") cls echo Atributos de la unidad %let% eliminados. echo. echo Presione una tecla para salir... pause>nul exit Gracias y Saludos!!!

Y supongamos que voy a eliminar cierta clase de archivos dentro de la misma memoria con el mismo .bat que code utilizara teniendo en cuenta que el proceso se haga luego de quitar los atributos al pendrive. Muchas gracias.
En lnea

DsKaTeR
C PQUE?? Mensajes: 9

Re: Tutorial Batch (todos los niveles) por Maxx93


Respuesta #12 en: 27 de Marzo de 2011, 12:36:47 pm

Otra cosa si yo fuera ha utilizar el comando AT para agregar tareas, pero el servicio est desactivado como puedo hacer para que por medio del mismo .bat se inicie el servicio ya que si no se inicia no pasa nada. muchas gracias espero haya sido claro.
En lnea Pginas: [1] Ir Arriba
I M P RI M I R

anterior prximo Foros pOrtal Hacker Programacion Programacin en general Batch (Moderadores: HolyKnight, JaAViEr, LauBuru, bolivianito) Tutorial Batch (todos los niveles) por Maxx93

Ir a:

===> Batch

ir

Powe re d by SMF 2.0 | SMF 20062009, Sim ple Machine s LLC zenblue by, Crip XHTML R SS W AP2

You might also like