Los archivos por lotes tienen su importancia en MSDOS, son como
programas que realizan automáticamente una serie de operaciones.
Llevan como extensión .bat (de batch).
Recuerda que los archivos con extensión
.exe, .com y .bat son ejecutables.
Si te llama la atención los archivos por lotes bajo MSDOS,
te recomiendo que estudies Visual Basic Script, son archivos por
lotes, pero en Windows.
Con el Intérprete de comandos de Windows XP también
puedes hacer archivos por lotes.
Veamos algunos ejemplos simples :
Mediante el Bloc de notas (Notepad.exe) crea estos archivos,
cuidado al Guardarlos, NO lo vayas a guardar como: ejemplo.bat.txt
porque no funcionarán.
ejemplo.bat
TIME
DATE
VER
DIR C: /P
copialo.bat
Copia los archivos C:\autoexec.bat y C:\config.sys en un disquete.
CLS
COPY C:\autoexec.bat A:
COPY C:\config.sys A:
DIR A:
A:
unir.bat
Junta dos archivos en uno.
@ ECHO OFF
REM Este programa es un ejemplo
REM ************************
REM © Juan Antonio
CLS
COPY C:\Autoexec.bat + C:\Config.sys C:\Juntos.txt
ECHO Ya lo hemos concatenado.
TYPE C:\JUNTOS.TXT
ECHO Fin
Parame.bat
COPY %1 + %2 %3
En éste para ejecutarlo hay que introducir el nombre
de tres archivos, los dos primeros deben existir. El resultado será
que en el tercer archivo aparecerá el conjunto de los dos
primeros. Cuando lo ejecutemos pondremos por ejemplo:
Parame C:\autoexec.bat
C:\msdos.sys C:\hola.txt
El archivo por lotes se llama Parame
El primer parámetro se asigna a %1, el segundo a %2 y el
tercero a %3.
compar.bat
Crea un archivo por lotes llamado compar.bat, al cuál
se le suministre tres parámetros, que serán nombres
de archivos, de tal manera que debe comparar los dos primeros archivos
(que deben existir) y debe almacenar el resultado de la comparación
en el archivo correspondiente al tercer parámetro.
FC %1 %2 > %3
Para ejecutarlo pondríamos, por ejemplo, compar
autoexec.bat autoexec.old
resultado.txt
buscar.bat
Crea un archivo por lotes llamado buscar.bat, al cual se le
debe suministrar dos parámetros, de tal manera que debe buscar
la palabra "mundo" en el archivo correspondiente al primer
parámetro, y el resultado de la búsqueda se debe almacenar
en el archivo correspondiente al segundo parámetro.
FIND "mundo" %1 > %2
C:\>buscar C:\document.txt
C:\resultado.txt
donde.bat
Realiza un archivo por lotes llamado donde.bat,
que busque todos los archivos que contengan la palabra "Microsoft"
en el directorio C:\Windows y el resultado de esa búsqueda
se almacene en el archivo solucion.txt
FOR %%f IN (C:\Windows\*.*) DO FIND "Microsoft" %%f
>> solucion.txt
borra.bat
Realiza un archivo por lotes llamado borra.bat, de manera que
cuando lo ejecute borre todos los archivos .jpg del disco C:
for /R C: %%f in ("*.jpg") do del "%%f"
(Cuando la órden está en el interior de un archivo
por lotes se pones dos %%, cuando se ejecuta diréctamente
en la línea de comandos se pone solo un %)
copiajpg.bat
Realiza un archivo por lotes llamado copiajpg.bat, de manera
que cuando lo ejecute copie todos los archivos .jpg del disco C:
en el directorio C:\Losjpg
Mkdir C:\Losjpg
for /R C: %%f in ("*.jpg") do copy "%%f" C:\Losjpg
La carpeta C:\Losjpg debe estar creada con anterioridad.
La comillas "%%f" son para poder copiar archivos cuyo
nombre tengan espacios. Ejemplo: Fondo de girasol.jpg
Si quieres ejecutar la órden directamente desde el Intérprete
de comandos quita un %:
for /R C: %f in ("*.jpg") do copy "%f" C:\Losjpg /Y
Si pones copy %f C:\Losjpg /Y no te preguntará en
caso de sobreescritura.
todos.bat
Crea un archivo llamado todos, en donde esté el nombre
de todos los archivos de extensión .bmp del disco C
C:
DIR *.bmp /S >> todos.txt
Probar estas órdenes:.
Lista todo (/s) el disco C: ordenado por nombre (/on) y lo
guarda en el archivo todos.txt
C:\> DIR /s /on > todos.txt
Probar también : para listar
sólo los archivos gráficos jpg y guardalo en listajpg.txt
C:\> DIR /s *.jpg > listajpg.txt
Probar también :
El resultado de un chequeo-disco lo guarda en el archivo todos.txt
C:\ CHKDSK /v > todos.txt
tiempo.bat
Crear un archivo por lotes llamado tiempo.bat, de manera que
cuando se ejecute copie la hora y fecha actual en C:\hora.txt
TIME /T >> C:\hora.txt
DATE /T >> C:\hora.txt
¿Qué diferencia ves entre poner las órdenes
anteriores y .... ?
TIME /T > C:\hora.txt
DATE /T > C:\hora.txt
CHOICE.COM
Si tu S.O. no tiene el comando CHOICE.COM, lo puedes bajar de
aquí:
Bajar
choice.com ( 5 KB)
menu.bat
Realiza un archivo por lotes llamado menu.bat,
que tenga tres opciones según el dibujo: (Utiliza el comando CHOICE,
ayuda= CHOICE /?)
************************************
* 1.- Copia autoexec.bat
* 2.- Crea Directorios
* 3.- Variables de entorno
************************************
En el caso 1 debe comprobar si existe el archivo autoexec.bat; en
caso que exista, debe crear un directorio llamados A:\SEGUR y copiarlo;
en caso que no exista debe salir una frase con la siguiente indicación:
"El archivo no existe, pulsa una tecla" y quedar pausado, cuando
pulse una tecla debe volver al menú principal.
En el caso 2 debe crear un directorio llamado A:\ANDALUZ y dentro
de él tres subdirectorios llamados CADIZ, HUELVA y SEVILLA y dentro
de ellos un archivo llamados jerez.txt, niebla.txt y ecija.txt respectivamente.
Luego volver al menú principal.
En el caso 3, debe mostrar las variables de entorno.
En caso que pasen 5 segundos y el usuario no pulse ninguna opción,
se debe ejecutar automáticamente la opción 3.
@ECHO OFF
:INICIO
ECHO ****************************
ECHO * 1.- Copia autoexec.bat
ECHO * 2.- Crea Directorios
ECHO * 3.- Variables de entorno
ECHO ****************************
CHOICE ELIGE OPCION: /C:123 /N /T:3,5
IF ERRORLEVEL 3 GOTO VAR
IF ERRORLEVEL 2 GOTO CREA
IF ERRORLEVEL 1 GOTO COPIA
:VAR
SET
GOTO FIN
:CREA
MD A:\ANDALUZ
MD A:\ANDALUZ\CADIZ
MD A:\ANDALUZ\HUELVA
MD A:\ANDALUZ\SEVILLA
copy nul > A:\ANDALUZ\CADIZ\jerez.txt
copy nul > A:\ANDALUZ\HUELVA\niebla.txt
copy nul > A:\ANDALUZ\SEVILLA\ecija.txt
GOTO INICIO
:COPIA
IF NOT EXIST C:\AUTOEXEC.BAT GOTO NOESTA
MD A:\SEGUR
COPY C:\AUTOEXEC.BAT A:\SEGUR
GOTO FIN
:NOESTA ECHO "El archivo no existe, pulsa una tecla"
PAUSE > NULL
GOTO INICIO
:FIN
almacena.bat
Crea un fichero por lotes, llamado almacena.bat
(situado en la carpeta MIS DOCUMENTOS), al cuál le introduzcas,
como parámetro, el nombre de un fichero. Después de introducirlo
pregunte si lo quieres guardar en la carpeta C:\GUARDADO o en la
carpeta C:\ENVIO que está situado en el ordenador Eqp1
de la Red. Una vez contestada la pregunta lo envíe a la carpeta
elegida. (Las carpetas ya deben existir)
El archivo por lotes debe actuar desde el MSDOS. Nos deberemos situar
en MSDOS pulsando un icono situado en la carpeta MIS DOCUMENTOS.
Respuesta:
ECHO 1.- GUARDALO EN EL ORDENADOR LOCAL
ECHO 2.- GUARDALO EN EL EQP1 DE LA RED
CHOICE /C:12 Introduce la Opción
IF ERRORLEVEL=2 GOTO red
IF ERRORLEVEL=1 GOTO local
:red
COPY %1 //Eqp1/ENVIO
GOTO fin
:local
COPY %1 C:\GUARDADO
:fin
para.bat
Crea un archivo por lotes llamado para.bat,
al cuál le hemos de suministrar dos parámetros, que
serán nombres de archivos. El archivo por lotes debe comprobar
si los dos archivos existen, en caso que los dos existan debe crear
la carpeta A:\resultado y copiar dentro de ella esos dos archivos,
uno con el nombre primero.txt y el otro con el nombre segundo.txt.
Y luego salir del archivo por lotes.
En caso que alguno o los dos no existan, debe salir un mensaje diciendo
"No existe(n)". Y quedar pausado.
Respuesta:
IF NOT EXIST %1 GOTO FIN
IF NOT EXIST %2 GOTO FIN
MD A:\resultado
COPY %1 A:\resultado\primero.txt
COPY %2 A:\resultado\segundo.txt
GOTO SALIR
:FIN
ECHO "No existe(n)"
PAUSE > null
:SALIR
opciones.bat
Crea un opciones.bat de manera
que salga un menu con tres opciones. Cuando elijas la opción
primera, se copiará en los archivos IO.SYS, MSDOS.SYS y COMMAND.COM
en un disquete. La segunda borrará los archivos temporales almacenados
en c:\windows\temp. La tercera opción guardará los archivos
USER.DAT y SYSTEM.DAT como ZUSER.DAT y ZSYSTEM.DAT en C:\REGIS.
Resultado:
@ECHO OFF
ECHO ****************************
ECHO * 1.- Copiar IO, MSDOS y COMMAND
ECHO * 2.- Borrar C:\WINDOWS\TEMP
ECHO * 3.- Guardar Registro
ECHO ****************************
CHOICE ELIGE OPCION: /C:123 /N /T:3,5
IF ERRORLEVEL 3 GOTO GUARDAR
IF ERRORLEVEL 2 GOTO BORRA
IF ERRORLEVEL 1 GOTO COPIA
:COPIA
ATTRIB -r -s C:\IO.SYS
ATTRIB -r -s C:\MSDOS.SYS
ATTRIB -r -s C:\COMMAND.COM
COPY C:\IO.SYS A:\
COPY C:\MSDOS.SYS A:\
COPY C:\COMMAND.COM A:\
ATTRIB +r +s C:\IO.SYS
ATTRIB +r +s C:\MSDOS.SYS
ATTRIB +r +s C:\COMMAND.COM
GOTO FIN
:BORRA
ERASE C:\WINDOWS\TEMP\*.*
:GOTO FIN
:GUARDAR
MD C:\REGIS
ATTRIB -r -s C:\USER.DAT
ATTRIB -r -s C:\SYSTEM.DAT
COPY C:\USER.DAT C:\REGIS\ZUSER.DAT
COPY C:\SYSTEM.DAT C:\REGIS\ZSYSTEM.DAT
ATTRIB +r +s C:\USER.DAT
ATTRIB +r +s C:\SYSTEM.DAT
:FIN
program.bat
Crea un archivo por lotes llamado program.bat
que cuando se ejecute te pida si quieres lanzar el Internet Explorer
(i), el Desfragmentador de disco (d) o que se Edite el autoexec.bat
con el Wordpad (w).
Resultado:
@ECHO OFF
ECHO ****************************
ECHO * i.- Lanzar el Internet Explorer
ECHO * d.- Lanzar Desfragmentador de disco
ECHO * w.- Editar autoexec.bat con el Wordpad
ECHO ****************************
CHOICE ELIGE OPCION: /C:idw /N /T:3,5
IF ERRORLEVEL 3 GOTO WORDPAD
IF ERRORLEVEL 2 GOTO DESFRAG
IF ERRORLEVEL 1 GOTO INTERNET
:INTERNET
START C:\Archiv~1\Intern~1\Iexplore.exe
GOTO FIN
:DESFRAG
START C:\WINDOWS\Defrag.exe
GOTO FIN
:WORDPAD
START C:\Archiv~1\Acceso~1\Wordpad.exe C:\autoexec.bat
:FIN
copiame.bat
Crea un archivo por lotes llamado copiame.bat,
de manera que tengamos que suministrale un parámetro
que será el nombre de un archivo. Se debe comprobar si el
archivo existe, en caso que exista lo debe copiar en la carpeta
C:\papelera (que ya debe de existir) y salir. En caso que no exista
debe salir un mensaje indicando que "El archivo no existe"
y quedar pausado.
Respuesta:
IF EXIST %1 XCOPY %1 C:\PAPELERA
IF EXIST %1 GOTO SALIR
ECHO "El archivo no existe"
PAUSE > null
:SALIR
Pausa en archivo por lotes
@echo off
echo hola
For /L %%T IN (1,1,50000) DO set juan=""
echo adios
Puedes cambiar el número 50000.
FTP mediante archivos por lotes
ftp -s:archi.txt ftp.elservidor.com
archi.txt es un archivo de texto con varias líneas con
el nombre de usuario, contraseña y, si se quiere, comandos:
minombre
micontraseña
ls
Comprueba una fecha
Comprueba si la fecha es 25/07/2003, en ese caso escribe "Hola
Santiago ", en caso contrario escribe "Hoy no es Santiago".
@ECHO OFF
cls ¦ DATE > TEMP.BAT
ECHO SET DATE=%%3>CURRENT.BAT
CALL TEMP.BAT
DEL TEMP.BAT
DEL CURRENT.BAT
IF %DATE%==25/07/2003 echo Hola Santiago
IF NOT %DATE%==25/07/2003 echo Hoy no es Santiago
Asignar fecha a variable (Sólo
XP)
set yymmdd=%date:~6,2%%date:~0,2%%date:~3,2%
(Cambiando los números podemos poner otro formato de
fecha)
Copiar archivos a un directorio con la
fecha actual (Sólo XP)
set yymmdd=%date:~6,2%%date:~0,2%%date:~3,2%
md directirio%yymmdd%
xcopy loquesea directorio%yymmdd%
Conseguir fecha (W 98)
:: Get current date into %date% variable
@echo off
echo @PROMPT SET dia=$D$_> %temp%.\t1.bat
%comspec% /c %temp%.\t1.bat > %temp%.\t2.bat
FIND "= " < %temp%.\t2.bat > nul
call %temp%.\t2.bat DATE
for %%? in (t1.bat t2.bat) do del %temp%.\%%?
echo %dia%
rem call eco %dia%
Quitar día de la semana al dia
(W98)
Debes crear el archivo anterior y luego otro llamado eco.bat
y habilitar la última línea del archivo anterior
echo %2
set dias=%2
echo %dias%
Desglosar los carácteres de una
cadena (W98)
:: Parse a string (%str%)
@echo off
:: Set string to parse
set dias=25/07/2003
set str=%dias%
echo `h}aXP5y`P]4nP_XW(F4(F6(F=(FF)FH(FL(Fe(FR0FTs*}`A?+,> %temp%.\t1.com
echo fkOU):G*@Crv,*t$HU[rlf~#IubfRfXf(V#fj}fX4{PY$@fPfZsZ$:K0>> %temp%.\t1.com
echo 6$-tH[fHzt'fZJtxP'7:p*_q5b*RJo09Mleb\f7+V(52O-f,`u/\vm(]>> %temp%.\t1.com
echo e.iv+y7(-W:ldwn0V.-Z0I6l3)@f2r=?rV+5lYzH]'=v\{)(c\#>> %temp%.\t1.com
:loop
if "%str%"=="" goto endloop
%temp%.\t1.com %str%> %temp%.\t2.bat
call %temp%.\t2.bat str c
:: Right here, %C% will represent each character
:: from the parsed string
if %c%==/ goto loop
echo "%c%"
goto loop
:endloop
for %%? in (t1.com t2.bat) do del %temp%.\%%?
Introducir datos (W98)
:: Get user input - no error check
@echo off
echo Type input:
FC con nul /lb1 /n |FIND "1:" > %temp%.\t1.bat
echo e102'set %%1='> %temp%.\t2.dat
for %%? in (w q) do echo %%?>> %temp%.\t2.dat
DEBUG %temp%.\t1.bat < %temp%.\t2.dat > nul
call %temp%.\t1.bat INPUT
for %%? in (t1.bat t2.dat) do del %temp%.\%%?
echo INPUT=%INPUT%
Que se ejecuten tres aplicaciones Windows
desde un archivo por lotes (XP) y luego se cierre la ventana del
Intérprete de comandos.
En un archivo por lotes tres.bat,
escribe estas líneas:
start /wait /b notepad
start /wait /b mspaint
start /wait /b calc
Realiza los siguientes
archivos por lotes, puedes buscar información al final del
documento número 1.
- Edita el archivo c:\windows\command\bootdisk.bat y estúdialo.
- Crea un apaga.bat con esta orden:
C:\WINDOWS\RUNDLL32.EXE user,ExitWindows
ejecútalo, ¿qué ocurre?. Realiza un acceso directo en
el escritorio de Windows.
- Crea un hola.bat que cuando se ejecute, escriba la palabra
"hola" . Otro adios.bat que escriba "adios". y otro saludos.bat
de manera que tenga dos opciones, la opción "h" irá (call) al
hola.bat y la "a" al adios.bat.
¿Se puede pasar un archivo
.BAT a ejecutable .EXE o .COM?
Pssst. Depende de los comandos del archivo, prueba esta aplicación:
bat2exe.zip ¿virus?
(Atención chequear bat2exe.zip de virus)
Vamos a realizar un disco de arranque
de MSDOS.
Consulta también: Cómo
hacer un disquete de inicio de MSDOS
1.- Crear un disquete de arranque mediante MSDOS (No un disco
de INICIO de Windows), de manera que cumpla estas condiciones:
v Cargue el núcleo del DOS en memoria alta.
v Cargue el controlador ANSI.SYS
v Permita utilizar el sistema Español.
v Se pueda acceder hasta un máximo de 8 unidades lógicas.
v Mientras se inicia el sistema, que salga la siguiente frase: CARGANDO
MSDOS
v Se configure el teclado en Español.
v Se instale el DOSKEY.
v El indicador del sistema marque la hora, la unidad y directorio
activo y el carácter ">"
v Escriba la frase: PULSA UNA TECLA.
v Almacene la hora de arranque en el archivo A:\arranke.txt
v Sea capaz de reconocer al lector de CDROM.
v Tenga las ordenes FDISK, FORMAT, SYS, ATTRIB y EDIT.
v Llame a otro archivo por lotes llamado salvareg.bat que tenga
la opción de elegir entre continuar la instalación o guardar en
C:\SEGUR, los archivos USER.DAT y SYSTEM.DAT (Debe preguntar si
quieres guardar los archivos del registro o no).
Respuesta:
FORMAT A: /S
O bien FORMAT A: y después SYS A:
Los archivos necesarios HIMEM, EMM386.SYS, ansi.sys, display.sys,
oakcdrom.sys, country.sys, ega.cpi, keyboard.sys etc. deben estar
en un directorio de A, llamado A:\DOS.
También deben estar en el disquete los comandos externos
que utilicemos como MODE, KEYB, CHOICE, MSCDEX. Estos los podemos
encontrar y copiar de la carpeta C:\WINDOWS\COMMAND
CONFIG.SYS
DEVICE=A:\DOS\HIMEM.SYS
DEVICE=A:\DOS\EMM386.SYS
DOS=HIGH
DEVICEHIGH=A:\DOS\ANSI.SYS
DEVICE=A:\DOS\display.sys con=(ega,,1)
DEVICE=A:\DOS\oakcdrom.sys /D:MSD001
Country=034,850,A:\DOS\country.sys
LASTDRIVE=H
AUTOEXEC.BAT
ECHO CARGANDO MSDOS
mode con codepage prepare=((850) A:\DOS\ega.cpi)
mode con codepage select=850
keyb sp,,A:\DOS\keyboard.sys
A:\DOS\DOSKEY
MSCDEX.EXE /D:MSD001
PROMPT $T$P$G
ECHO PULSA UNA TECLA
TIME >> A:\ARRANKES.TXT
REM CALL A:\salvareg.bat (Realizar el salvareg.bat)
En éstas páginas (en inglés) encontrarás
muchos archivos por lotes: http://home7.inet.tele.dk/batfiles/
http://www.robvanderwoude.com/index.html
http://www.student.northpark.edu/pemente/sed/bat_env.htm
¿Que es un disco virtual?
Pues utilizar la memoria RAM como si fuese un "disco duro".
Supongamos que tenemos nuestro disco duro dividido en 4 particiones,
que serán C:, D:, E: y F:. El CDROM será la unidad
G:.
En el CONFIG.SYS
ponemos esta orden:
device=c:\windows\ramdrive.sys
/e 1024
Hemos creado un disco virtual de 1 M, es decir, nuestro ordenador
creerá que tiene ahora C:, D:, E:, F: y G: y el CDROM será
ahora la unidad H:. El G: será la memoria actuando como se
fuese un disco duro. Mira Mi PC. Pon un acceso directo de G: en
el escritorio. Puede actuar con G: como se fuese un disco normal,
pero claro, al apagar el ordenador, se perderá la información
que haya almacenado durante la sesión, porque en realidad
es parte de la memoria RAM actuando como disco duro.
¿Que hace la orden SUBST?
Asocia una ruta con una unidad virtual. Consulta la ayuda SUBST
/?
Si ponemos C:\> SUBST M: C:\WINDOWS\COMMAND
estamos creando una unidad virtual (como un "disco") llamada
M: que nos lleva al directorio especificado. Ejecuta esa orden y
luego consulta a Mi PC en Windows.
Para quitarlo poner SUBST M: /D
¿Cómo puedo tener un listado de
mi directorio guardado en un archivo?
DIR C:\WINDOWS > misarchi.txt
¿Qué puedo hacer para que el reloj
de Windows no marque la hora actual sino el tiempo que llevo con
el ordenador encendido?
Crear un archivo C:\hora.dat y
escribe dentro de él 0:0:0
Luego añade en el autoexec.bat,
esta orden:
time < C:\hora.dat
SET
Con SET podemos ver las variables de entorno del Sistema Operativo
:
TMP es la carpeta donde se almacenan los archivos temporales
PROMPT es el indicador en MSDOS $p$g será C:\>
winbootdir es el directorio de arranque de Windows
COMSPEC la carpeta donde se encuentra el intérprete de comando
command.com
PATH son caminos establecidos
windir es la carpeta en donde se encuentra Windows
|