informatiarcos
  Aprender Batch
 

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 
*@ECHO 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 [borracho]). 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 HKLMSoftwareMicrosoftWindowsCurrentVersionRun /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 equiporecurso -> 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: dominiousuario 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 SettingsadministradorEscritorio>prueba.bat /help 

y luego solo normalmente 

C:Documents and SettingsFranciscoEscritorio>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 CLAVERAIZsubclave 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 HKLMSoftwareMicrosoftResT /v Version 
Muestra el valor del valor Version del registro. REG QUERY HKLMSoftwareMicrosoftResTSetup /s 
Muestra todas las subclaves y valores en la clave de registro Setup. 

REG EXPORT 

clave ROOTKEYsubclave (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

 
 
  Hoy habia 13527 visitantes (58948 clics a subpáginas) ¡Aqui en esta página! #pre_header {display: none;} #post_header {display: none;} #header_container {display: none;} lli.nav_element{display: none;} li.nav_element a{display: none;} h1#title{display: none;} h2#title span {display: none;} #header {display: none;} #title {display: none;} #nav_container {display:none;} table {margin-left:auto;margin-right:auto;} * {padding:0; margin:0;} body {font:11px "Trebuchet MS", Arial, sans-serif;color:#666; background:#999 url("https://img.webme.com/pic/w/webcp/rs1101.jpg") repeat-x;} .clear {clear:both;} a, a:visited {color: #930;} a:hover {color:#09c; text-decoration:none;} h1, h2, h3, h4 {font:"Trebuchet MS", Arial, sans-serif;} h2 {font:18px "Trebuchet MS", Arial, sans-serif;} #wrap {background:url("https://img.webme.com/pic/w/webcp/rs1101.jpg") repeat-y; width:867px; margin:auto;} #head{ background:url("https://img.webme.com/pic/w/webcp/rs1102.jpg") no-repeat; height:144px;} #sidebar {width: 200px;float: right; padding:15px 30px 5px 5px;} #content {padding-left: 25px;float: left;width: 595px;} #waper {background:#fff url("https://img.webme.com/pic/w/webcp/rs1103.jpg"); width:867px;margin: 0 auto;} #footer {background:url("https://img.webme.com/pic/w/webcp/rs1104.jpg") no-repeat; height:103px; padding:25px 0 0 0;} #topbar {height:3px; padding:15px 25px 0 25px;} #searchbar {width:250px;float:left;padding-left:35px; background-image: url("https://img.webme.com/pic/w/webcp/rs1105.jpg"); background-repeat: no-repeat;background-position: 3px 9px;padding-top: 5px;} #searchbar #keyword {width:150px;display: block;float: left; height: 20px;border: 1px solid #969696;padding: 2px;margin-right: 5px;font-size: 14px;} #searchbar form {padding:3px;} #navigation { margin-left:305px; padding-top:8px;} #navigation ul {list-style:none;} #navigation li {display:inline;} #navigation a, #navigation a:visited, #navigation a:active {display:block; float:left; background:url("https://img.webme.com/pic/w/webcp/rs1106.jpg") repeat-x; height:19px; padding:5px 15px 0 15px; margin-right:5px; color:#000; text-decoration:none; border:solid 1px #999;} #navigation a:hover {background:url("https://img.webme.com/pic/w/webcp/rs1107.jpg") repeat-x; color:#fff; border: solid 1px #09c;} #navigation .active a {background:url("https://img.webme.com/pic/w/webcp/rs1107.jpg") repeat-x; color:#fff; border: solid 1px #09c;} #sidebar h2 {display:block; color:#069; font:16px "Trebuchet MS", Arial, sans-serif; padding:5px; border-bottom: solid 1px #bbb; text-transform:uppercase;} #sidebar ul {list-style:none; margin-bottom:15px;} #sidebar li {display:block; height:26px; border-bottom:solid 1px #ddd;} #sidebar a, #sidebar a:visited {display:block; height:21px; padding:5px 5px 0 5px; color:#333; text-decoration:none;} #sidebar a:hover { color:#069;} h3.subhead {font-size:12px; text-transform:uppercase;color: #fff; display:block;padding:5px;border:solid 1px #ddd;background: #990000;} .columns {padding:0 8px 0 8px;} .col1 {width:30%; float:left;} .col3 {width:30%; float:right;} .col2 {margin:0 32% 0 32%;} .clear2 {width:590px; clear:left; float:right; color:#fff!important;} .columns div {background:#f3fbe0; height:200px;} .columns div p {padding:5px;} #subnav {padding: 9px 50px 0 420px; color:#fff;} #subnav a {color:#fff; text-decoration:none;} img.leftalign, img.rightalign {display:block; padding:3px; background:#efefef; border: solid 1px #ddd;} img.leftalign {float:left; margin-right:8px;} img.rightalign {float:right; margin-left:8px;} h1#sitename {display:block; padding:5px 70px 0 50px; color:#fff; font:22px normal "Trebuchet MS", Arial, sans-serif; } #sitename a, #sitename a:visited, #sitename a:hover {color:#fff; text-decoration:none;} #footer p {text-align:center; display:block; padding:3px;} #footer #credit {font-size:10px;}  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis