[Manual]Otro manual para BAt 100% recomendado

Tema en 'Manuales' iniciado por ~Heinz, 13 Ago 2008.

  1. ~Heinz

    ~Heinz Usuario Casual nvl. 2
    87/163

    Registrado:
    12 May 2008
    Mensajes:
    2.972
    Me Gusta recibidos:
    2
    Introducción
    Antes que nada indicaros que se llaman procesos batch. La razón por la que a menudo se alude a ellos como bat es porque el entorno msdos requiere como máximo tres letras en la extensión y por tanto los archivos tienen la extensión .bat

    ¿Qué 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 algún editor ascii.

    Al guardarlos deben tener la notación de nombres propia de msdos. Esto es un nombre con máximo 8 letras (espacios y \ no permitidos), luego un punto y la extensión 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

    Método 2 mediante la redirección
    echo 1º línea a insertar >nombre_de_archivo.bat
    echo restantes líneas >>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.

    ¿Qué es eso de la redirección?
    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 irá 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

    Qué son los filtros
    Los filtros son órdenes 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 notación de msdos (8 letras sin espacios como máximo, luego un punto y tres letras como máximo de extensión) 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 extensión cfg
    comando a*.cfg -> seleccionar todos los archivos que comienzen por a y tengan la extensión cfg
    comando a*b.cfg -> seleccionar todos los archivos que comienzen por a, acaben por b y tengan la extensión cfg
    comando *asa*.cfg -> seleccionar todos los archivos que contengan 'asa' y tengan la extensión cfg
    comando c?asa.cfg -> seleccionar todos los archivos que contengan una C, luego un caracter cualquiera y luego 'asa'. Debe tener también la extensión cfg
    comando c?b*.* -> seleccionar todos los archivos que empiezen por c, tengan un caracter cualquiera, luego una b y cualquier extensión
    comando *.b?t -> seleccionar todos los archivos que tengan una extensión 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 situación 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 raíz 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 será reconvertido a su nombre corto. Este se obtiene añadiendo los seis primeros carácteres válidos del nombre, luego el signo ~ (alt 126) y luego un número.

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

    También 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)

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

    Esta sería la trayectoria de mimusica.mp3
    c:\misdoc~1\mi~1\mimusica.mp3
    Qué equivale a
    "c:\Mis Documentos\Mi Música\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 demás Lpt2, Lpt3 (una en cada puerto paralelo instalado en el sistema). Hasta donde yo sé no hay posibilidad de llegar a USB si no es la impresora por defecto.

    Como se les llama a las unidades lógicas
    Siempre es una letra seguida del signo dos puntos.
    A: = disquetera
    B: = reservada para segunda disquetera
    C: = primera partición (normalmente es la que arranca)
    D: = segunda partición (generalmente el cdrom)
    Por eso si se crea una unidad lógica 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 lógica existente.

    ¿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
    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.

    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

    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 introducirá posteriormente en la unidad A

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

    FORMAT unidad parámetros
    /q -> formateo rápido
    /s -> Transferir el sistema operativo
    Format a: /s formatea el disquete y le transfiere el sistema operativo básico 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 parámetros
    Para comprobar/reparar el estado del disco
    /autofix -> reparar automáticamente errores
    /surface -> hacer pruebas de superficie
    /checkonly -> no reparar, solo chequear

    Comandos para programación
    EDIT archivo
    Editor de textos utilizado para editar scripts y archivos de texto.

    DEBUG archivo parámetros de archivo
    Inicia el desensamblador con el programa indicado al que se le pasan los parámetros 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 opción snc
    if errorlevel 1 goto ...
    if errorlevel 2 goto ...
    if errorlevel 3 goto ...
    Este ejemplo muestra el literal "elija una opción y da a elegir s (sí), n (no) o C (continuar) por ejemplo
    las tres siguientes líneas especifican a donde debe saltar el flujo del programa según la tecla pulsada.

    Comandos de red
    ARP parámetros
    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 parámetros
    Mostrar las características de configuración de IP
    /all -> muestra toda la información de configuración
    /release adaptador -> libera la ip del adaptador especificado
    /renew adaptador -> renueva la ip para el adaptador especificado
    /flushdns -> purga la caché de resolución de dns
    /registerdns -> actualiza las conexiones dhcp y vuelve a registrar los nombres dns
    /displaydns -> muestra el contenido de la cache de resolución dns

    NBTSTAT
    Hace un estado de la red por netbios
    Tiene muchos parámetros. Consultarlos mediante nbtstat /?

    NET parámetros
    Comando para el uso de redes netbios
    USE \\equipo\recurso -> para acceder a unidades lógicas compartidas. Se le asignará un nombre de unidad y estará disponible como una unidad mas del sistema.
    USE \USER: dominio\usuario para acceder a un dominio
    USE unidad /DELETE eliminar el acceso a unidad compartida.
    SHARE trayecto /REMARK texto -> para compartir un recurso en red
    START -> para comenzar sesión netbios
    STOP -> para detener netbios

    NETSTAT
    Para ver el estado de la red.
    -a -> mostrar todos los puertos y conexiones
    -n -> mostrar números de puertos y direcciones
    -r -> mostrar la tabla de rutas
    -s -> mostrar estadísticas por protocolo
    -p protocolo-> protocolo puede ser tcp o udp. muestra las conexiones activas

    NSLOOKUP dominio
    Muestra el dominio, su ip, dns donde se resuelve y sus alias

    PING
    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

    Programación BAT
    Para crear un script bat podemos utilizar cualquiera de los métodos expuestos anteriores y utilizar cualquiera de los comandos especificados.

    Pueden recibir parámetros según los cuales realizar operaciones u otras.

    Un caso especial es el archivo autoexec.bat que se ejecuta automáticamente en windows 98 y anteriores. debe estar en el directorio raíz.

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

    echo off
    rem **** esto es un comentario
    rem **** formatear disquete y pasarle el sistema
    format a: /s
    rem **** copiar archivos necesarios para teclado en español
    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 aquí hay que copiar el driver dos del cdrom que
    rem viene con el disquete que lo acompaña.
    rem copiar otras utilidades prácticas 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 configuración 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 deberíamos 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 parámetro 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 español
    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 deberíamos darle un parámetro que será 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
    ********************************************
    Creación 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 lógica
    echo 6 -> Compartir unidad lógica
    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 parámetro del dominio a consultar
    nslookup %1
    goto fin

    arp:
    arp -a
    goto fin

    acceder:
    rem %1 es un parámetro 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

    fin:
     
  2. MatiShot! ~

    MatiShot! ~ Usuario Casual nvl. 2
    37/41

    Registrado:
    5 Jul 2008
    Mensajes:
    1.293
    Me Gusta recibidos:
    1
    ta ordenaito thx se agradece
     
  3. the kamikase

    the kamikase Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Registrado:
    19 Sep 2008
    Mensajes:
    68.365
    Me Gusta recibidos:
    42
  4. KrashLC3

    KrashLC3 Usuario Casual nvl. 2
    37/41

    Registrado:
    10 Jun 2009
    Mensajes:
    1.522
    Me Gusta recibidos:
    6
    Muevan este tema (windows) no tiene nada que ver con Linux.
     
  5. Ogroberto

    Ogroberto Usuario Casual nvl. 2
    87/163

    Registrado:
    11 Sep 2008
    Mensajes:
    5.396
    Me Gusta recibidos:
    7
    Es verdad.

    No contaminen el foro