Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
Ficheros por lotes
Ejecución C:\BATH>tiempo
C:\BATH>date
La fecha actual es Mar 15/08/1995
Escriba la nueva fecha (dd-mm-aa):
C:\BATH>time
La hora actual es 0:53:54,12
Escriba la nueva hora:
C:\BATH>
3
Ficheros por lotes
Símbolo Significado
:etiqueta Nombre de una etiqueta.
%número Parámetro del fichero por lotes.
%variable% Variable del entorno.
%%variable Variable de la orden For.
6
Ficheros por lotes
La orden ECHO
La orden ECHO
Creación
C:\BATH>copy con tiempo.bat
echo off @echo off
date
time
^Z
1 archivo(s) copiado(s)
Ejecución
C:\BATH>tiempo C:\BATH>tiempo
La fecha actual es Mar 15/0
C:\BATH>echo off
Escriba la nueva fecha (
La fecha actual es Mar 15/08/1995
La hora actual es 0:53:54,1
Escriba la nueva fecha (dd-mm-aa):
Escriba la nueva hora:
La hora actual es 0:53:54,12
Escriba la nueva hora: C:\BATH>
C:\BATH>
8
Ficheros por lotes
La orden ECHO
Creación C:\BATH>copy con tiempo.bat
@echo off
echo Este es el fichero TIEMPO.BAT
date
time
^Z
1 archivo(s) copiado(s)
Ejecución C:\BATH>tiempo
Este es el fichero TIEMPO.BAT
La fecha actual es Mar 15/08/1995
Escriba la nueva fecha (dd-mm-aa):
La hora actual es 0:53:54,12
Escriba la nueva hora:
C:\BATH>
9
Ficheros por lotes
La orden ECHO
C:\BATH>type saludo.txt
HOLA COMO ESTAS
C:\BATH>
10
Ficheros por lotes
La orden REM
@echo off
rem Programa: TIEMPO.BAT
rem Cometido: Mostrar La fecha y la hora del
rem sistema y la oportunidad de modificarla.
date
time
11
Ficheros por lotes
Actividades
Ejercicio 4A
12
Ficheros por lotes
Diferencias Windows
Gestión de directorios y ficheros
Se puede crear varios directorios en un solo comando md
md uno dos tres
Se puede crear un directorio con sus subdirectorios con un solo md
md cuatro\cuatro1\cuatro11
Se puede borrar varios directorios en el mismo comando md
rd uno dos tres
rd /s cuatro
Recuerda que se puede renombrar directorios con el comando move
Gestión de PARÁMETROS
Gestión de parámetros
Los parámetros son informaciones adicionales colocadas detrás del
nombre de una orden. Si la mayoría de las órdenes de MS-DOS
admiten parámetros, también será posible gestionar parámetros en
los ficheros por lotes.
@echo off
rem Programa: BORRA2.BAT
del %1
del %2
Gestión de PARÁMETROS
@echo off
rem Programa: COPIAB.BAT
echo Se están copiando los ficheros %1 y %2 a B:
copy %1 b:\
copy %2 b:\
No se copiaría
15
Ficheros por lotes
Gestión de PARÁMETROS
@echo off
echo El fichero es %~n1
echo La extensión es %~x1
echo El path es %~p1
echo La unidad es %~d1
Una ejecución de ejemplo sería esta:
C:\>parametros.cmd "c:\path1\path2\fichero.txt“
El fichero es fichero
La extensión es .txt
El path es \path1\path2\
La unidad es c:
16
Ficheros por lotes
Ejemplo:
Crear un directorio con la fecha del sistema (con formato aaaa_mm_dd):
md %date:~-4%_%date:~3,2%_%date:~0,2%
20
Ficheros por lotes
Ruta de ejecutables
%PATH%
Devuelve la ruta de las carpetas de los ejecutables más importantes del
sistema por orden de búsqueda y ejecución.
Todos los ficheros que están en esas carpetas se pueden ejecutar sin
necesidad de indicarle su ruta.
En Windows suelen estar en C:\windows\system32.
set path=%path%;nuevarutaejecutables
22
Ficheros por lotes
***************************
La media de Juan es 5
***************************
Por supuesto Juan, 4 y 6 son datos que nos tiene que pedir el programa
Existen líneas en blanco y líneas de asteriscos
23
Ficheros por lotes
La orden PAUSE
Detiene temporalmente el desarrollo de un programa. Cuando el DOS
encuentra una orden Pause en un fichero por lotes visualiza un
mensaje en pantalla y espera una tecla para proseguir. Podemos
presionar Ctrl+Pausa y así, interrumpir el desarrollo del fichero.
Encadenar comandos
Recordemos que ejecutar también en los batch más de un comando en
una sola línea, utilizando los operadores:
& - Ejecuta todos los comandos de la línea
&& - Ejecuta comandos secuencialmente hasta que uno fracasa
| | - Ejecuta comandos secuencialmente hasta que uno tiene éxito
La orden GOTO
Normalmente un fichero por lotes se desarrolla secuencialmente,
desde la primera línea hasta la última. Sin embargo, la orden Goto
permite desviar la ejecución del programa hasta una etiqueta
especificada como parámetro.
GOTO [:]etiqueta
Las etiquetas deben ir precedidas de dos puntos (:) para diferenciarse
de las órdenes. Admiten hasta ocho caracteres significativos.
@echo off
ver
goto Final
vol
:Final
La orden GOTO
Vamos a crear un programa para copiar varios disquetes desde
la unidad A: al directorio actual.
@echo off
rem Programa: DEMO.BAT
echo ********************************************
echo ** Este programa copia todos los ficheros **
echo ** de la unidad A: al directorio actual **
echo ********************************************
pause
:Proceso
copy a:\*.* .
echo Introduzca siguiente disquete en A: y pulse Enter
pause >nul
goto Proceso
27
Ficheros por lotes
La orden IF
Desvía condicionalmente el proceso de ejecución de un fichero
por lotes. Admite 6 sintaxis diferentes:
IF EXIST fichero orden Si existe el fichero se ejecuta la orden.
Windows
If exist archivo (del archivo) else echo el fichero no existe
La orden IF
Windows
No solo se puede utilizar el signo == para hacer comparaciones
EQU, que es el equivalente a ==
NEQ, Sirve para cuando queremos ver Desigualdad
LSS, Para verificar si el numero es Menor
LEQ, Para verificar si es menor o igual
GTR, Si es mayor
GEQ, Si es Mayor o igual
Ejemplo:
if %a% GTR %b% (echo El mayor es %a%) else echo El mayor es %b%
29
Ficheros por lotes
La orden IF
IF EXIST
Un programador debe considerar todas y cada una de las situaciones
posibles al ejecutarse su programa y, por tanto, debe evitar la aparición de
mensajes de error inesperados en la pantalla.
@echo off
del %1
Si ahora lo hacemos funcionar introduciendo como parámetro un fichero
inexistente, el MS-DOS tomará el control y dará su correspondiente
mensaje de error. Se podría poner:
@echo off
if not exist %1 echo ¡Es imposible borrar fichero que no existe!
if exist %1 del %1
Para comprobar la existencia de un directorio se utilizará el dispositivo NUL:
if not exist C:\DOC\NUL echo el directorio DOC no existe
En windows no haría falta el nul 30
Ficheros por lotes
La orden IF
IF cadena1==cadena2
En un fichero por lotes para borrar dos ficheros, hemos
supuesto que el usuario siempre introduce dos parámetros. Sin
embargo, se producirá un error si el usuario sólo introduce uno
de ellos: la orden DEL %2 quedará transformada en DEL a
secas y como DEL no funciona sin parámetros, MS-DOS
mostrará una advertencia. Este problema se soluciona con lo
siguiente:
@echo off
rem Programa: BORRA2B.BAT
if "%1"=="" echo Debe introducir uno o dos ficheros
como parámetros.
if not "%1"=="" del %1
if not "%2"=="" del %2
31
@echo off
Ficheros por lotes
Title Manejo de Escritorio
:ini
La orden IF cls
echo Opciones de menu
echo 1-Apagar el sistema
Ejemplo: echo 2-Abrir Paint
echo 3-Abrir Firefox
echo.
set /P op= Escoge una opcion de las anteriores:
if %op%==1 goto uno
if %op%==2 goto dos
if %op%==3 (goto tres) else goto fin
:uno
echo Has elegido apagar el sistema
shutdown -s -t30 -c “Hora de dormir”
pause
goto ini
:dos
echo Has elegido abrir paint
start mspaint.exe
pause
goto ini
:tres
echo Has elegido abrir el firefox
start firefox.exe
:fin
echo “Se acabó” 32
Ficheros por lotes
La orden IF
IF ERRORLEVEL
Cada orden externa de MS-DOS genera un código de salida a su
término indicando si pudo realizarse satisfactoriamente y lo
almacena en una variable llamada ERRORLEVEL.
Generalmente un código de salida 0 indica que no hubo ningún
problema y un código de salida superior hace referencia a
diferentes errores.
Muchos ficheros por lotes necesitan saber si la orden anterior
cumplió su cometido correctamente: para ello utilizan la orden IF
ERRORLEVEL.
Es muy importante recordar que la orden se ejecutará si el código
de salida es igual o superior al especificado detrás de
ERRORLEVEL. Por eso conviene hacer los if de mayor a menor.
33
Ficheros por lotes
La orden IF
@echo off
rem Programa: COPIA-AB.BAT
xcopy a:\ b:\ > nul
if errorlevel 1 goto Error
if errorlevel 0 echo ¡La copia fue correcta!
goto Final
:Error
echo Se produjo un error durante la copia
:Final
La orden IF
Si tenemos que poner varios comandos se puede estructurar de la
manera siguiente:
@echo off
rem Programa: IGUALES.BAT
if %1 == %2 (
echo Muy bien !!!
echo Son Iguales
Obligatorio junto ) else (
echo Son distintos
)
echo SE ACABO
35
Ficheros por lotes
Actividades
Ejercicio 4B
36
Ficheros por lotes
Actividades
Repaso
37
Ficheros por lotes
38
Ficheros por lotes
La orden CHOICE
@echo off
rem Programa: DEMOB.BAT
choice ¿Desea continuar?
if errorlevel 2 goto Final
:Proceso
copy a:\ .
choice Para continuar pulse C y para finalizar F /C:FC
if errorlevel 2 goto proceso
:Final
39
Ficheros por lotes
La orden CHOICE
@echo off
rem Programa: UTIL.BAT
:Menu
cls
echo UTILIDADES DE MS-DOS
echo --------------------
echo.
echo A. Anti-Virus
echo B. Backup
echo D. Defragmentar
echo E. Editor :Anti
echo S. Salir MSAV
echo. goto Menu
choice ¿Qué utilidad desea? /c:abdes /n /t:s,15 :Backup
if errorlevel 5 goto Salir MSBACKUP
if errorlevel 4 goto Editor goto Menu
if errorlevel 3 goto Defrag :Defrag
if errorlevel 2 goto Backup DEFRAG
if errorlevel 1 goto Anti goto Menu
if errorlevel 0 goto Menu :Editor
EDIT
goto Menu
:Salir
echo.
40
Ficheros por lotes
La orden FOR
La orden FOR
Las comas no son obligatorias
Ejemplo: Windows
FOR /L %%x IN (1,2,10) DO echo %%x
En donde /L es para especificar que nuestro for se basará en un conteo
de números. 1 el nº en que empieza, 2 es el nº de salto y 10 el nº hasta
el que hay que llegar.
Mostrará los números impares del 1 al 10 (1,3,5,7 y 9).
Si no especifico el parámetro /L me mostraría el 1 el 2 y el 10.
Ejemplo:
FOR %%C IN (cls dir chkdsk) DO %%C
La orden FOR
Listado de Carpetas: Windows
La orden CALL
45
Ficheros por lotes
Creación de MACROS
46
Ficheros por lotes
Creación de MACROS
Crear una macro para formatear rápidamente el disquete en A:
C:\>doskey rapid=format a: /q
( Introducida esta macro, escribir rapid será igual que escribir format a: /q )
47
Ficheros por lotes
48
Ficheros por lotes
El fichero AUTOEXEC.BAT
Como cualquier fichero por lotes, el AUTOEXEC.BAT posee las
mismas características que los demás: lleva extensión BAT,
contiene órdenes, se puede ejecutar introduciendo su nombre
después del símbolo del sistema y se interrumpe su
funcionamiento si pulsamos Ctrl+Pausa.
• Tiene un nombre y extensión obligatorias: siempre debe
llamarse AUTOEXEC.BAT
• Se ejecuta cada vez que arranca el ordenador. Si no existe,
MS-DOS hace funcionar a tres órdenes en su lugar: Date,
Time y Ver.
• Debe residir en el directorio raíz de la unidad de arranque. Por
ejemplo, si arrancamos con el disco duro (es lo más normal) se
buscará el fichero AUTOEXEC.BAT en su directorio raíz y
luego, se ejecutará.
49
Ficheros por lotes
NombreOrden=ParámetrosOrden
50
Ficheros por lotes
Comando Descripción
@ Evita que la línea aparezca por pantalla.
REM Introduce un comentario y anula una línea de ordenes.
ECHO Muestra en pantalla una cadena de caracteres.
PAUSE Detiene momentáneamente la ejecución de un archivo por lotes.
SET permite manejar variables.
IF Esta orden se utiliza para dar saltos condicionales.
CHOICE permite escoger entre varias opciones.
FOR Repite un número determinado de veces un mismo proceso.
SHIFT Modifica los parámetros de un archivo por lotes.
CALL Llama a otro archivo BATCH.
GOTO Salta y ejecuta una nueva línea de ordenes indicada por :
:ETIQUETA Identifica una posición de salto.
%NUM Introduce parámetros al archivo por lotes.
51
Ficheros por lotes
Actividades
Ejercicio 4C
Ejercicio 4D
Ejercicio 4E
52
Recuerda Ficheros por lotes
Aplicaciones Windows
Como comandos externos también podríamos considerar las aplicaciones
Windows que se encuentren en algún directorio incluido en PATH:
Ejemplos:
Z:\>EXPLORER file://c:/fotos/paisaje.jpg
Z:\>EXPLORER c:\fotos\
Z:\>CALC la calculadora
Z:\>CLIPBRD el portapapeles
Z:\>REGEDIT el editor de registro
Z:\>CHARMAP mapa de caracteres
53
Recuerda Ficheros por lotes
Aplicaciones Windows
También es capaz de "lanzar" archivos no ejecutables, arrancando de forma
automática para ello la aplicación que tenga asociada según su extensión :
Ejemplos:
Z:\>clock.avi
Z:\>hola.txt
Z:\>C:\pagWeb\index.html
REPASO
55
Ficheros por lotes
Actividades
REPASO