Autor Tema: Manual de Programacion .Bat  (Leído 3295 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado jakell

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 1485
  • AsI TErminRe Yop
Manual de Programacion .Bat
« : marzo 20, 2007, 03:31:05 pm »
Manual de Programacion .Bat


Introduccion
Antes que nada indicaros que se llaman procesos batch. La razon por la que a menudo se alude a ellos como bat es porque el entorno msdos requiere como maximo tres letras en la extension y por tanto los archivos tienen la extension .bat

?Que se puede hacer con ellos?
Pues se puede hacer de forma automatizada todo aquello que se pueda hacer en la consola de msdos.

?Como hago un archivo bat
Pues son texto plano. Quiere eso decir que se pueden escribir en el block de notas, utilidad Edit de msdos  o algun editor ascii.

Al guardarlos deben tener la notacion de nombres propia de msdos. Esto es un nombre con maximo 8 letras (espacios y \ no permitidos), luego un punto y la extension que en este caso es obligatoriamente bat.

Para crearlos desde la misma consola puedo utilizar varios sistemas

Sistema 1: mediante la orden copy
copy con: nombre_de_archivo.bat
...
...
comandos
...
...
Ctrl z (se acaba y se graba al pulsar Ctrl Z

Metodo 2 mediante la redireccion
echo 1? linea a insertar >nombre_de_archivo.bat
echo restantes lineas >>nombre_de_archivo.bat

En cualquier caso para modificarlos podemos utilizar la utilidad Edit de msdos (abriendo el archivo concreto y luego grabando los cambios) o el block de notas.

?Que es eso de la redireccion?
Pues al igual que en unix se puede hacer que la salida de un comando sirva como entrada de otro.

Para ello se utilizan los operadores < y > que sirven para indicar que salida debe ir a que lugar

Por ejemplo si yo le doy la orden DIR, esta ira por defecto a la pantalla (dispositivo CON), pero puedo redirigir la salida a la impresora por defecto (dispositivo PRN) de la siguiente forma
dir >prn

Que son los filtros
Los filtros son ordenes que sirven para formatear la salida del comando de acuerdo a nuestros intereses. Se utilizan mediante la barra vertical (Alt 124).

El filtro SORT sirve para ordenar la salida
dir | sort
El filtro MORE sirve para pausar la salida cada pantalla para que pueda ver todos los datos de salida con tranquilidad. Pasa de pantalla a pantalla al pulsar una tecla
dir | more

?Como puedo seleccionar varios archivos
Para ello y teniendo en cuenta que los nombres de los archivos deben cumplir la notacion de msdos (8 letras sin espacios como maximo, luego un punto y tres letras como maximo de extension) se pueden utilizar los llamados comodines.
* Equivale a varios caracteres
? equivale a un solo caracter.

Ejemplos
   comando *.cfg -> seleccionar todos los archivos que tengan la extension cfg
   comando a*.cfg -> seleccionar todos los archivos que comienzen por a y tengan la extension cfg
   comando a*b.cfg -> seleccionar todos los archivos que comienzen por a, acaben por b y tengan la extension cfg
   comando *asa*.cfg -> seleccionar todos los archivos que contengan 'asa' y tengan la extension cfg
   comando c?asa.cfg -> seleccionar todos los archivos que contengan una C, luego un caracter cualquiera y luego 'asa'. Debe tener tambien la extension cfg
   comando c?b*.* -> seleccionar todos los archivos que empiezen por c, tengan un caracter cualquiera, luego una b y cualquier extension
   comando *.b?t -> seleccionar todos los archivos que tengan una extension que empieze por b, luego un caracter cualquiera y luego una t.

?Que son las trayectorias o paths?
La trayectoria es el nombre completo de un archivo e indica la situacion exacta de un archivo y su nombre.

Si digo que el archivo se llama leeme.txt indico su nombre, pero nada mas. Se da por supuesto que se encuentra en el directorio actual.

Si digo c:\leeme.txt indico que el archivo que me interesa se llama leeme.txt y se encuentra en el directorio raiz de C.

Dado que en msdos no se admiten nombres largos (mas de 8 letras) ni espacios, cuando quiero utilizar un nombre de windows en msdos debo saber que este sera reconvertido a su nombre corto. Este se obtiene anadiendo los seis primeros caracteres validos del nombre, luego el signo ~ (alt 126) y luego un numero.

De esta forma un archivo que se encuentre en Mis documentos en win98 tendra el path
   c:\misdoc~1\leeme.txt

Tambien se pueden utilizar (mientras las comillas para delimitar el nombre
   "c:\Mis Documentos\leeme.txt"
Pero esto solo vale cuando se utiliza msdos como consola (no cuando se inicia windows 98 en modo msdos)

Observese que se utiliza la barra contraria a la de linux/unix para especificar subcarpetas o subdirectorios

Esta seria la trayectoria de mimusica.mp3
c:\misdoc~1\mi~1\mimusica.mp3
Que equivale a
"c:\Mis Documentos\Mi Musica\mimusica.mp3"

Cuales son los nombres de dispositivos
La pantalla se llama CON. Por eso si redirigo algo a CON lo estoy sacando por pantalla.
La impresora por defecto se llama PRN
La primera impresora se llama Lpt1 y las demas Lpt2, Lpt3 (una en cada puerto paralelo instalado en el sistema). Hasta donde yo se no hay posibilidad de llegar a USB si no es la impresora por defecto.

Como se les llama a las unidades logicas
Siempre es una letra seguida del signo dos puntos.
   A: = disquetera
   B: = reservada para segunda disquetera
   C: = primera particion (normalmente es la que arranca)
   D: = segunda particion (generalmente el cdrom)
Por eso si se crea una unidad logica mediante netbios en windows, esta puede tener un nombre msdos para poder acceder a ella desde la consola. La letra que se asigne no puede corresponder a una unidad logica existente.

Desconectado jakell

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 1485
  • AsI TErminRe Yop
Re: Manual de Programacion .Bat
« Respuesta #1 : marzo 20, 2007, 03:32:03 pm »
?Qu? comandos puedo utilizar?
Comandos b?sicos
CLS -> borra pantalla
ECHO -> tiene varias posibilidades:
    Echo sin par?metros saca el estado en que se encuentra la variable echo (on u off)
    Echo on activa el echo (como en un terminal TTY) por lo que los comandos se ver?n en pantalla y luego su resultado
   Echo off desactiva el comando echo y ya se ver?n los resultados de la ejecuci?n del comando, pero no el comando en s? mismo
   Echo literal saca por pantalla el literal. Por eso al hacer echo literal >fichero.bat estamos redirigiendo la salida de echo literal (que tendr?a que salir por la pantalla) al archivo fichero.bat.
PAUSE ->Sirve para sacar un mensaje y parar la ejecuci?n hasta que se pulse una tecla
PROMPT ->Sirve para cambiar el prompt de msdos. El m?s habitual es $p$g que corresponde a
   $p = mostrar trayecto actual
   $g = mostrar el separador >
   $l  = mostrar el separador <
   $b = mostrar el separador |
   $q = mostrar el signo =
   $$ = mostrar el signo $
   $t  = mostrar la hora
   $d = mostrar la fecha
   $v = mostrar la versi?n del sistema
   $n = mostrar unidad actual
   $h = retroceso. Borra el caracter previo
   $e = esc. Muestra el signo correspondiente al asci 27
   $_ = Retorno de carro y salto de l?nea (equivale a chr(10) & chr(13)

   Por eso si ponemos prompt $p$g el cursor muestra la trayectoria donde estamos y luego el separador. Es posible a?adir texto (por ejemplo prompt Mi_nombre $p$g

DATE
Ver/poner la fecha del sistema
TIME
Ver/poner la hora del sistema
VER[/font]
Versi?n del sistema
VOL unidad
Volumen de la unidad especificada
PATH
Indica un trayecto por defecto si se produce una petici?n de un archivo que no est? en el directorio actual.
Por eso en windows 98 suele haber una l?nea en autoexec.bat que es
   path c:\windows; c:\windows\command
que indica que si se solicita un ejecutable que no est? en el directorio actual, lo busque primero en la carpeta windows y luego en la subcarpeta command.

KEYB c?digo_pais,juego_de_caracteres,definici?n_de_teclado,
El c?digo de pa?s de espa?a es el 'sp'
El juego de caracteres aplicable a espa?a es el 850 ? 437
El archivo de definici?n de teclado es keyboard.sys
Para configurar un teclado en espa?ol
keyb sp,,c:\windows\command\keyboard.sys

SYS unidad
Transferir el sistema operativo a la unidad especificada.

DOSKEY
Emular la capacidad de unix/linux de recordar los comandos introducidos anteriormente mediante la flecha arriba del teclado.
0
MEM par?metros
Muestra la memoria usada y libre en el sistema
   /p -> muestra por programas
   /d -> por programas y controladores
   /c -> clasifica por tama?o

Comandos de manejo de archivos
COPY origen destino
   Sirve para copiar archivos de un lugar a otro. el origen debe ser un trayecto completo de donde est?n los archivos a copiar. Si se omite se entiende que en el directorio actual.
  El destino debe ser una trayectoria completa de donde dejar el/los archivo(s)
   copy miarchivo.txt c:\ (copiarlo al directorio ra?z de C)
   copy miarchivo.txt c:\miarch.txt (copiarlo y adem?s cambiarle el nombre a miarch.txt)
   copy *.txt a:\ (copiar todos los archivos que tengan la extensi?n txt a la unidad A)
   copy *.txt c:\misdoc~1 (copiar todos los archivos que tengan la extensi?n txt al directorio Mis documentos (cuyo nombre corto es misdoc~1).

DEL archivo(s)
Borrar archivos en seleccionados
   del leeme.txt (borra el archivo leeme.txt en el directorio actual)
   del c:\leeme.txt (borra el archivo leeme.txt que se encuentra en c:\)
   del archiv~1\*.* (borra todos los archivos que se encuentren en el directorio 'Archivos de programa' cuyo nombre corto es archiv~1 (no se borran las subcarpetas)

DELTREE archivo(s) -y
   Borra el arbol especificado (si es un archivo pues el archivo, si es una carpeta pues la carpeta con todas las subcarpetas que incluya).
  Con el par?metro -y no pregunta cada vez
  Este comando en realidad no es un comando sino una utilidad inclu?da en msdos.

MKDIR nombre (o bien MD nombre)
  Sirve para crear un directorio
   Md micarpeta

CHDIR nombre (o bien CD nombre)
   Sirve para ir al directorio aludido. Se le tiene que dar la trayectoria completa o si no intentar? desplazarse desde el directorio actual.
   Cd c:\archiv~1 (se va a archivos de programa)
   Cd .. (se va al directorio superior)

RMDIR nombre (o bien MD nombre)
   Borra un directorio. Este debe estar vac?o.
   RD c:\Misdoc~1 (borra Mis Documentos, aunque no podr? porque no est? vac?o).

DIR trayecto
   Saca una lista del contenido del directorio especificado en el trayecto. Si no se especifica nada, se entiende el actual.
   Si se pone como par?metro /W saca un listado resumido.
   Si se pone como par?metro /P saca un listado utilizando el filtro more.

ATTRIB archivo(s)-> Muestra los atributos de los archivos indicados y en su caso permite cambiarlos.
Los atributos son:
   H -> oculto. Se activa con +h y desactiva con -h
   R -> Lectura. Solo lectura con +r, normal con -r
   S -> Sistema. Se activa con +s y desactiva con -s
   A -> Modificado. Para copias de seguridad incrementales. +a indica modificado y -a indica no modificado.
Attrib miarchivo.txt (mostrar los atributos de miarchivo.txt)
attrib *.exe +r +r +s (pone a todos los archivos con extensi?n exe como ocultos, del sistema y read only)

RENAME o REN nombre1 nombre2
Cambiar el nombre de archivo
Ren miarchivo.txt miarchivo2.txt

TYPE archivo
Muestra por pantalla el contenido de un archivo
type miarchivo.txt

Desconectado jakell

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 1485
  • AsI TErminRe Yop
Re: Manual de Programacion .Bat
« Respuesta #2 : marzo 20, 2007, 03:32:50 pm »
Comandos de disco
DISCKCOPY origen destino-> Copia disquetes completos.
Diskcopy a: a: Copia el disquete introducido en la unidad A a un disquete que se introducira posteriormente en la unidad A

FDISK
Permite editar las particiones del disco duro.
Con la opcion /mbr permite borrar el Master Boot Record

FORMAT unidad parametros
  /q -> formateo rapido
  /s -> Transferir el sistema operativo
Format a: /s formatea el disquete y le transfiere el sistema operativo basico de arranque.

LABEL unidad etiqueta
Cambiar la etiqueta de volumen del disco de la unidad
label a: midisquete
 
MSCDEX
Montar una unidad de CdRom en msdos (solo requerido si se carga msdos sin estar windows cargado previamente (por ejemplo cuando se arranca desde disquete).
Suponiendo un CdRom al que se haya cargado en config.sys con el nombre MiCd
mscdex /d:MiCd

Scandisk unidad parametros
Para comprobar/reparar el estado del disco
   /autofix -> reparar automaticamente errores
   /surface -> hacer pruebas de superficie
   /checkonly -> no reparar, solo chequear

Comandos para programacion
EDIT archivo
Editor de textos utilizado para editar scripts y archivos de texto.

DEBUG archivo parametros de archivo
Inicia el desensamblador  con el programa indicado al que se le pasan los parametros especificados.

CHOICEtexto opciones
Se utiliza en programas bat para dar a elegir a un usuario entre un conjunto de opciones
La respuesta se devuelve mediante la variable errorlevel
choice Elija una opcion snc
if errorlevel 1 goto ...
if errorlevel 2 goto ...
if errorlevel 3 goto ...
Este ejemplo muestra el literal "elija una opcion y da a elegir s (si), n (no) o C (continuar) por ejemplo
las tres siguientes lineas especifican a donde debe saltar el flujo del programa segun la tecla pulsada.

Comandos de red
ARP parametros
Modificar la tabla arp.
   -a -> mostrar la tabla arp
   -s ip mac -> agregar una entrada a la tabla arp

FTP
Iniciar el cliente ftp

IPCONFIG parametros
Mostrar las caracteristicas de configuracion de IP
   /all -> muestra toda la informacion de configuracion
   /release adaptador -> libera la ip del adaptador especificado
   /renew adaptador -> renueva la ip para el adaptador especificado
   /flushdns -> purga la cache de resolucion de dns
   /registerdns -> actualiza las conexiones dhcp y vuelve a registrar los nombres dns
   /displaydns -> muestra el contenido de la cache de resolucion dns
   
NBTSTAT
Hace un estado de la red por netbios
Tiene muchos parametros. Consultarlos mediante nbtstat /?

NET parametros
Comando para el uso de redes netbios
   USE \\equipo\recurso -> para acceder a unidades logicas compartidas. Se le asignara un nombre de unidad y estara disponible como una unidad mas del sistema.
   USE \USER: dominio\usuario para acceder a un dominio
   USE unidad /DELETE eliminar el acceso a unidad compartida.
   SHARE trayecto /REMARK texto -> para compartir un recurso en red
   START -> para comenzar sesion netbios
   STOP -> para detener netbios

NETSTAT
Para ver el estado de la red.
   -a -> mostrar todos los puertos y conexiones
   -n -> mostrar numeros de puertos y direcciones
   -r -> mostrar la tabla de rutas
   -s -> mostrar estadisticas 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
Utilizar ICMP para llegar a un determinado nodo

TELNET ip puerto
Utilizar el protocolo telnet para acceso a un servidor exterior

TRACERT destino
tracear el camino hasta llegar al destino especificado

Desconectado jakell

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 1485
  • AsI TErminRe Yop
Re: Manual de Programacion .Bat
« Respuesta #3 : marzo 20, 2007, 03:34:12 pm »
Programacion BAT
Para crear un script bat podemos utilizar cualquiera de los metodos expuestos anteriores y utilizar cualquiera de los comandos especificados.

Pueden recibir parametros segun los cuales realizar operaciones u otras.

Un caso especial es el archivo autoexec.bat que se ejecuta automaticamente en windows 98 y anteriores. debe estar en el directorio raiz.

********************************************
Ejemplo 1
Archivo bat crea un disquete de arranque en la unidad A con cdrom montado y teclado en espanol.

echo off
rem **** esto es un comentario
rem **** formatear disquete y pasarle el sistema
format a: /s
rem **** copiar archivos necesarios para teclado en espanol
copy c:\windows\command\keyboard.sys a:
copy c:\windows\command\keyb.com a:
rem **** copiar archivos necesarios para montar el cdrom
copy c:\windows\command\mscdex.exe
rem aqui hay que copiar el driver dos del cdrom que
rem viene con el disquete que lo acompana.
rem copiar otras utilidades practicas para un disco de inicio
copy c:\windows\command\fdisk.exe a:
copy c:\windows\command\format.exe a:
copy c:\windows\command\deltree.exe  a:

rem crear el archivo de inicio autoexec.bat en disquete
echo keyb sp,,keyboard.sys >a:autoexec.bat
echo path c:\windows;c:\windows\command;a:\ >>a:autoexec.bat
echo mscdex /d:MiCdrom >>a:autoexec.bat

rem crear el archivo de configuracion para montar el driver del cdrom
echo dos=high,umb >a:config.sys
echo device=a:\nombre_del_driver.sys /d:MiCdRom >>a:config.sys

echo **************************************
echo      El disco de arranque ha sido creado
echo **************************************

*******************************************
Ejemplo 2
En el caso anterior he puesto la ruta de origen c:\windows\command que es donde se encuentra en windows 98. Sin embargo en Win2k se encuentra en \winnt\win32 por lo que en caso de win2k deberiamos cambiar eso.
Win2k tampoco usa autoexec.bat por lo que para no perderme en diferencias entre uno y otro voy a suponer que en vez de c:\windows\command quiero que el origen sea variable

echo off
rem si no se da parametro terminar
if %1z = z goto fin
rem **** esto es un comentario
rem **** formatear disquete y pasarle el sistema
format a: /s
rem **** copiar archivos necesarios para teclado en espanol
copy %1\keyboard.sys a:
copy %1\keyb.com a:
rem **** copiar archivos necesarios para montar el cdrom
copy %1\mscdex.exe
rem copiar utilidades
copy %1\fdisk.exe a:
copy %1\format.exe a:
copy %1\deltree.exe  a:
fin:

para ejecutar este script deberiamos darle un parametro que sera el origen de los archivos. En el caso anterior esto era c:\windows\command. En el caso de Win2k esto es c:\winnt\win32

Miprograma c:\windows\command (para utilizar esta ruta como ruta origen)
Miprograma c:\winnt\win32 (para utilizar esta otra ruta como ruta origen)

********************************************
Ejemplo 3
********************************************
Creacion de un archivo para consultas habituales sobre la red

echo off
echo 1 -> examinar netbios
echo 2 -> examinar la red
echo 3 -> examinar dominio
echo 4 -> examinar la tabla de arp
echo 5 -> Acceder a unidad logica
echo 6 -> Compartir unidad logica
echo 7 -> Acceder a un dominio
echo pulse una tecla del 1 al 6 para elegir
choice 123456
if errorlevel 1 goto netbios
if errorlevel 2 goto red
if errorlevel 3 goto dominio
if errorlevel 4 goto arp
if errorlevel 5 goto acceder
if errorlevel 6 goto compartir
if errorlevel 7 goto accesodominio
goto fin

netbios:
nbtstat -na
goto fin

red:
netstat -na
goto fin

dominio:
rem %1 es un parametro del dominio a consultar
nslookup %1
goto fin

arp:
arp -a
goto fin

acceder:
rem %1 es un parametro de la unidad a acceder. Debe
rem ser del tipo \\ordenador\recurso
net use %1
net start
goto fin

compartir:
rem %1 es el directorio a compartir. Debe ser algo como
rem c:\misdoc~1
rem %2 es el texto que queremos que tenga como nombre largo en windows
net share %1 remark %2
net start
goto fin

accesodominio:
rem %1 es el dominio al que queremos acceder
rem %2 es el usuario al que queremos introducir
net use user %1\%2
net start

gracias: MrXonxy IvirtualLabs