Sunteți pe pagina 1din 14

Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

Hola, juapog, tienes 0 mensajes, 0 son nuevos.


04 de Abril de 2011, 12:16:01

Noticias: ¿Queres empezar con Bugs y Exploits y no sabes por donde? Lee esto

Gracias gente :

Foros pOrtal Hacker


Programacion
Programación en general juapog y 0 Visitantes están viendo este tema.
Batch (Moderadores: Elprince, JaAViEr, LauBuru, bolivianito)
Tutorial Batch (todos los niveles) por Maxx93 « anterior próximo »

Páginas: [1]

Autor Tema: Tutorial Batch (todos los niveles) por Maxx93 (Leído 392 veces)

maxx93 Tutorial Batch (todos los niveles) por Maxx93


Me das tu password? « : 18 de Febrero de 2011, 10:22:55 »

Desconectado

Mensajes: 227
Tutorial de Programacion en Batch
(todos los niveles)
por maxx93

Contenidos
Citar
1.Introducción
2.Variables
2.1.Recortar una variable
3.Bucles
Lo imposible es la 4.Comando IF
ignorancia de lo posible 5.Comandos Basicos
6.Shutdown
7.Call
8.Parámetros
9.Shift
10.Attrib
11.Redirecciones
12.Manejo del Registro (Cuidado 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.Consultar clave del registro
12.4.Exportar archivo .reg de una clave
12.5.Importar un archivo .reg al registro
12.6.Comparar dos claves del registro
13.Errorlevel
14.AT
15.SUBST
16.ASSOC
17.CACLS
18.Setlocal y Endlocal
19.FOR
20.Comprimir y Descomprimir archivos si tenemos Winrar instalado
20.1.Para comprimir archivos
20.2.Para descomprimir archivos21.Cambiar tamaño de la consola
21.Cambiar tamaño de la consola
22.Activar o desactivar firewall de windows
23.Tablas
24.Comandos de Red
25.Hacer que el bat espere un tiempo

1. Introducción
Batch es un lenguaje scripting, y para su utilización utiliza el Símbolo del Sistema de Windows (DOS). Los lenguajes tipo scripting, se utilizan para escribir script [
para mas información 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 también 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 códigos 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 guión bajo titilando este es el cursor, a la derecha del cursor tenemos el Prompt, en mi caso es el:

1 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

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, estarán compuestas de la siguiente manera
[Comando] [Parámetros]

Ahora vamos a hacer que debajo del prompt se escriba una línea que diga “Hola Mundo”, para hacerlo escribiremos

Echo Hola Mundo

En este caso “echo” es el comando y “Hola Mundo” son los parámetros (serian dos parámetros, los parámetros son delimitados por espacio, un espacio indica donde
termina un parámetro y empieza otro)

El comando Echo muestra un texto y además oculta o visualiza el prompt.


Para ocultar el prompt escribiremos echo off y para visualizarlo echo on.
Para dejar un renglón 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 teoría, empecemos a crear nuestros scripts.
Vamos al Bloc de Notas, y escribiremos lo siguiente
Código
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 demostración 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 parámetros 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 configuración para todos los usuarios)

%APPDATA% C:\Documents and Settings\{usuario}\Datos de Programa


(Ruta de la carpeta con datos de programa)

%COMPUTERNAME% Nombre del equipo


(Nombre del equipo)

%COMSPEC% C:\Windows\System32\cmd.exe
( Ruta al intérprete 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% C:\Documents and Settings\{usuario}


(incluye unidad)

2 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

%PATH% C:\Windows\System32\;C:\Windows\
(Rutas en la que se buscan ejecutables)

%PATHEXT% .COM; .EXE; .BAT; .CMD; .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 intérprete de comandos)

%SYSTEMDRIVE% C:
(Unidad en la que se ha instalado Windows)

%SYSTEMROOT% y %WINDIR% C:\Windows


(Contiene la carpeta de Windows)

%TEMP% y %TMP% C:\DOCUME~1\{usuario}\LOCALS~1\Temp


(Ruta de la carpeta Temp)

%USERNAME% Ej.:Computer
(Nombre de usuario actual)

%DATE% 31/12/2009
(Fecha actual)

%TIME% 00:00:00,00
(Hora actual)

%CD% C:\
(Carpeta actual con su ruta completa)

%ERRORLEVEL% 0 o 1
(Código de salida del comando anterior)

%RANDOM% 32767
(Número 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 señala 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
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
Código
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 información 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)
Código:
%original=~5,4%

Ahora queremos mostrar a partir de la c incluida


Código:
%original:~2%

Ahora queremos mostrar los ultimos 3 caracteres


Código:
%original:~-3%

Ahora queremos mostrar todo menos los ultimos tres caracteres


Código:
%original:~0,-3%

Para hacer el signo ~ lo hacemos con alt+126

3.Bucles
Un bucle o ciclo, en programación, es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de

3 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

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
Código
@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 Coincide) 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.:
Código
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.:
Código
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:


Código
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:


Código
@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 según 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

Código
@echo off
Echo Menu
Echo.
Echo 1. Escribe la palabra batch
Echo 2. Que es esto?
Echo 3. Salir

4 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

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
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
Cls - Borra la pantalla
Type “rutaarchivo” – Escribe en la pantalla un archivo
Del “rutaarchivo” – Borra un archivo
Copy “rutaorigen” “rutafinal” – Copia un archivo
Move “rutaorigen” “rutafinal” – Copia un archivo
Ren “rutaorigen” “nuevonombre” – Renombra un archivo
Title Nuevotitulo – Cambia el titulo de la consola
Md “rutadirectorio” – Crea una carpeta
Rd “ruta directorio” - Borra una carpeta
Tasklist – Lista los procesos actuales
Taskkill /f /im “proceso.extension” – Cierra un proceso
Taskkill /pid “numerodepid” – Cierra un proceso indicando el numero de pid
(Que es un proceso? http://es.wikipedia.org/wiki/Proceso_(inform%C3%A1tica))
Fc “rutaarchivo1” “rutaarchivo2” – Compara 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 aplicación

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 parámetros colocandolos después de lo que queremos llamar ej: call:bucle 123
Aca enviamos con el bucle el parametro de valor 123.

8.Parámetros
Un parámetro es un tipo de variable que es recibida por una función, procedimiento o subrutina. (Mas info http://www.alegsa.com.ar/Dic/parametro.php)
Los parámetros pueden ser “de fabrica” o los podemos poner nosotros.
Por ejemplo:
Código:
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 ejecución y según esto actuar con el if.
Por ejemplo:
Entre las primeras lineas de archivo.bat esta escrito este fragmento de codigo:
Código
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


Código
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.

5 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

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 tamaño del archivo %1.
(Extraido de http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html#ixzz1DX1eJtnh)

9.Shift
Cambia la posición de los parámetros.
Por ejemplo si tenemos parámetros: a [%1], b [%2], c [%3], d [%4], e [%5], f [%6]

Código:
Shift /1
Los parámetros cambian: b [%1], c [%2], d [%3], e [%4], f [%5]

Código:
Shift /2
Los parámetros 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 parámetros según 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 sólo 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:
Código:
Attrib +h +s "archivo"
Y para volver a tenerlo visible hacemos:
Código:
Attrib -h "archivo"

11.Redirecciones
Para escribir un archivo de texto que diga abc hacemos:
Código:
Echo abc>"rutadelarchivotxt"
Para agregar otra linea a ese archivo sin sobreescribirlo hacemos:
Código:
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)
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_ENDIA N
REG_DWORD
REG_BINARY
REG_DWORD_LITTLE_EN DIAN
REG_NONE
REG_EXPAND_SZ ]

Ejemplo:
Código:
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v "ejemplo" /t reg_sz /d "C:\ejemplo.bat"

12.2.Borrar clave del registro

6 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

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

Ejemplo:
Código:
reg delete "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v "ejemplo" /f

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.:
Código:
reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"
Consultamos la clave "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"

12.4.Exportar archivo .reg de una clave


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

Ej.:
Código:
reg export "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" “%homedrive%%homepath%\Escritorio\HKLMRun.reg”
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.:
Código:
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.:
Código:
12.7.reg compare "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" "HKEY_CURRENT_USER\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.:
Código:
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.

Ej2:
Código:
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

7 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

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


Código:
Cacls "directoriooarchivo" /e /d %username%

Para permitir el acceso a un usuario en este caso nuestro usuario actual


Código:
Cacls "directoriooarchivo" /e /g %username%:f

Para denegar el acceso a todos los usuarios


Código:
Cacls "directoriooarchivo" /e /d todos

Para permitir el acceso a todos los usuarios


Código:
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, después del setlocal por mas que se modifique a las variables si se usa endlocal, las variables vuelven como estaban antes.

Ej.:
Código
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
Código
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
Código
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


ENABLEDELAYEDEXPANS ION / DISABLEDELAYEDEXPAN SION
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]

Código:
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,

8 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

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.
Código:
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

Código:
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:

Código:
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.
Código:
For /f "skip=3" ('type archivo.txt') do (echo %%a)
Saltea las primeras 3 lineas del archivo
Código:
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

Código:
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 enabledelayedextens ion. Esto habilitara la expansión de
variables retardada. De esta manera podran guardarse variables en el for, aunque no de la forma %variable% sino !variable!
Ej.:
Código
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

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:
Código
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 contaseña 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:
Código
Start Winrar.exe a -ep1 "\Documents and Settings\Administrador\Escritorio\Archivoscomprimido.rar"
"\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\Maxi.rar"


"\Documents and Settings\Administrador\Escritorio\Hola.txt" -ibck
(en este ultimo ejemplo la contraseña 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:
Código:
Start Winrar.exe x "\Documents and Settings\Administrador\Escritorio\Archivoscomprimido.rar"
"\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 cantraseña casa)

[Todos los comandos del winrar se encuentran en la carpeta del programa, en el


archivo rar.txt]

9 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

21.Cambiar tamaño de la consola


Podemos cambiar el tamaño de la consola de esta manera:
Código:
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.:
Código
mode con: cols=50 lines=25
PD.: El tamaño 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
Código:
netsh firewall set opmode enable

Para desactivar
Código:
netsh firewall set opmode disable

Netsh nos ofrece varias opciones para la configuración de una red. Para mas información netsh/?

23.Tablas
Modelos de tablas:
Citar
Modelo 1
Codigo:
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º º
echo º º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Modelo 2
Codigo:
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Modelo 3
Codigo:
echo ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
echo ±± ±±
echo ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
echo ±± ±±
echo ±± ±±
echo ±± ±±
echo ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

Modelo 4
Codigo:
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

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

Netstat
Comando para comprobar el estado actual de la red

netstat -a Mostrar todos los puetos y conexiones


netstat -n Mostrar número de puerto y direcciones
netstat -r Mostrar la tabla de rutas
netstat -s Mostar estadísticas por protocolo
netstat -p tcp/udp Mostrar las conexiones activas TCP o UDP

Nslookup
Utilidad para interrogar dns

Ping
Enviar paquetes icmp a un determinado destino.

10 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

ping -t ping al host hasta que se pare


ping -a resolver direcciones en nombres de host
ping -n numero Número de peticiones a enviar
ping -l tamaño tamaño del buffer

Telnet
Inicia una sesión 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:
Código:
Ping -n 1 localhost>nul
Espera un segundo y se “oculta” el texto que aparece al ejecutar ping.
Código:
Ping -n 5 127.0.0.1>nul
Espera 5 segundos y se “oculta” el texto que aparece al ejecutar ping. Podemos poner 127.0.0.1 o localhost que es lo mismo. Localhost es nuestra pc, aunque
estemos sin conexión funcionara.

Podemos crear un comando que haga la espera. Aca les dejo uno que hice:
Código
@echo off
setlocal
if x%1x==xx (goto :ayuda)
set tiempo=%1
call:verif >nul 2>&1
goto:veriff
:verif
set /a ver=0x%tiempo%
goto:eof
:veriff
if %errorlevel% neq 0 (goto :ayuda)
call:code %tiempo% >nul 2>&1
endlocal
goto:eof

:code
set /a tiempoterm=%time:~0,2%*3600+%time:~3,2%*60+%time:~6,2%+%tiempo%
set /a hs=%tiempoterm%/86399
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:


Código:
Espera "cantidaddesegundos"

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

En línea

Tutorial Batch (todos los niveles) por Maxx93


Cuidemos el medio ambiente. Sin él no vivimos!

bcn_marc_18 Re: Tutorial Batch (todos los niveles) por Maxx93


Me das tu IP? « Respuesta #1 : 05 de Marzo de 2011, 12:29:40 »

Desconectado
Muchisimas gracias tio, eres un crack!!
Mensajes: 121 me ha servido mucho, grax

En línea

11 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

odyseo Re: Tutorial Batch (todos los niveles) por Maxx93


CPQUE?? « Respuesta #2 : 05 de Marzo de 2011, 07:45:45 »
Desconectado
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
Mensajes: 6 introducirme en la programacion batch. gracias por el aporte

En línea

Cpu1 Re: Tutorial Batch (todos los niveles) por Maxx93


Me das tu IP? « Respuesta #3 : 18 de Marzo de 2011, 06:09:17 »

Desconectado
Esta muy bien el tutorial pero en el capitulo 12 donde claves del registro intento agregar una pero me dice:
Mensajes: 33
ERROR: Acceso denegado.

Que hago, como soluciono este problema?

Programador batch y aprendiendo


VB

En línea

JaAViEr Re: Tutorial Batch (todos los niveles) por Maxx93


"Ustedes se ríen de mi porque soy « Respuesta #4 : 18 de Marzo de 2011, 06:42:14 »
diferente, yo me río de ustedes
porque son todos iguales."
Moderador Debes tener permisos de Admin
Si te metes con CPH
te metes conmigo

Desconectado

Mensajes: 6,950

En línea

~「」シツー!?∴※• NO ME DES CLICK O MORIRÉ !


1337
SIGUEME EN TWITTER @JaAViEr_CPH !!
Cpu1 Re: Tutorial Batch (todos los niveles) por Maxx93
Me das tu IP? « Respuesta #5 : 18 de Marzo de 2011, 07:50:34 »

Desconectado
Y como puedo conseguirlos en un ordenador ageno
Mensajes: 33

Programador batch y aprendiendo


VB

En línea

.:.IlcOn14.:. Re: Tutorial Batch (todos los niveles) por Maxx93


Yo vivo en CPH « Respuesta #6 : 18 de Marzo de 2011, 08:13:20 »

Desconectado
Debes hacerte una cuenta de administrador

12 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

Mensajes: 833

Si te conformas nunca
ganaras.

En línea

Fuck Youuuuuuuuu (8)(8)

mr.blood Re: Tutorial Batch (todos los niveles) por Maxx93


Yo vivo en CPH « Respuesta #7 : 20 de Marzo de 2011, 10:32:49 »

Desconectado
Un tuto muy completito .
Mensajes: 995

Buscando el saber. Porque el


Una chincheta no estaria mal, para este trabajo tan bueno.
saber, es PODER.
Sa1uDoS

En línea

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

Código:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
>++++++++++++++++++++++++++++++++++++++++++++++.
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.

DsKaTeR Re: Tutorial Batch (todos los niveles) por Maxx93


CPQUE?? « Respuesta #8 : 24 de Marzo de 2011, 03:51:34 »
Desconectado
Muy bueno el tuto, mira tengo una duda, Como le puede hacer para un .bat que le quite atributos a un pendrive
Mensajes: 9 Código:
Attrib /d /s -r -h -s *.*
la cuestión 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 colaboración.

En línea

maxx93 Re: Tutorial Batch (todos los niveles) por Maxx93


Me das tu password? « Respuesta #9 : 24 de Marzo de 2011, 07:43:02 »

Desconectado
Gracias a todos por comentar!!!
Mensajes: 227
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


Código
@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 salir...&pause>nul&exit)
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... Presione una tecla para salir...&pause>nul&exit)
echo Eliminando atributos... Espere...
Lo imposible es la ignorancia for /f "delims=" %%a in ('dir /a /b /s "%let%:\"') do (attrib -r -a -s -h "%%a")
de lo posible cls
echo Atributos de la unidad %let% eliminados.
echo.
echo Presione una tecla para salir...
pause>nul
exit

Gracias y Saludos!!!

« Última modificación: 24 de Marzo de 2011, 07:46:04 por maxx93 » En línea

Tutorial Batch (todos los niveles) por Maxx93


Cuidemos el medio ambiente. Sin él no vivimos!

13 de 14 04/04/11 17:21
Tutorial Batch (todos los niveles) por Maxx93 - CP... http://www.portalhacker.net/index.php/topic,12617...

DsKaTeR Re: Tutorial Batch (todos los niveles) por Maxx93


CPQUE?? « Respuesta #10 : 26 de Marzo de 2011, 03:29:51 »
Desconectado

Mensajes: 9
Muchas gracias por la ayuda, está perfecto.

En línea

DsKaTeR Re: Tutorial Batch (todos los niveles) por Maxx93


CPQUE?? « Respuesta #11 : 27 de Marzo de 2011, 12:28:32 »
Desconectado
Cita de: maxx93 en 24 de Marzo de 2011, 07:43:02
Mensajes: 9
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


Código
@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 salir...&pause>nul&exit)
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... Presione una tecla para salir...&pause>nul&exit)
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 utilizaría teniendo en cuenta que el proceso
se haga luego de quitar los atributos al pendrive.

Muchas gracias.

En línea

DsKaTeR Re: Tutorial Batch (todos los niveles) por Maxx93


CPQUE?? « Respuesta #12 : 27 de Marzo de 2011, 12:36:47 »
Desconectado
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
Mensajes: 9 inicie el servicio ya que si no se inicia no pasa nada. muchas gracias espero haya sido claro.

En línea

Páginas: [1]
« anterior próximo »

Ir a: ===> Batch

Powered by SMF 1.1.13 | SMF © 2006-2009, Simple Machines LLC hacker Divertidos Juegos de Mario Bros!

14 de 14 04/04/11 17:21

S-ar putea să vă placă și