S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 2.- Escribir el proceso por lotes HORAMIN.BAT que modifique el PROMPT para mostrar la hora y minutos actuales. EDIT HORAMIN.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $T$H$H$H$H$H$H GOTO FIN :AYUDA UTILIZACION: Teclear HORAMIN en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes modifica el PROMPT para mostrar la hora y minutos actuales. :FIN
PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $T Muestra la hora $H Borra / elimina un carácter, el carácter que haya inmediatamente a la izquierda donde aparece, es el equivalente a la tecla de teclado: suprimir hacia atrás. Si ponemos 2 $h borra 2 caracteres, en este caso ponemos 6 $H para solo mostrar la hora en formato: horas : minutos
2 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 2.- Escribir el proceso por lotes HORAMIN.BAT que modifique el PROMPT para mostrar la hora y minutos actuales. EDIT HORAMIN.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $T$H$H$H$H$H$H GOTO FIN :AYUDA UTILIZACION: Teclear HORAMIN en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes modifica el PROMPT para mostrar la hora y minutos actuales. :FIN
PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $T Muestra la hora $H Borra / elimina un carácter, el carácter que haya inmediatamente a la izquierda donde aparece, es el equivalente a la tecla de teclado: suprimir hacia atrás. Si ponemos 2 $h borra 2 caracteres, en este caso ponemos 6 $H para solo mostrar la hora en formato: horas : minutos
2 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 3.- Escribir el proceso por lotes NORMAL.BAT que muestre el PROMPT predeterminado del sistema (y solo él) en color azul. EDIT NORMAL.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $E[34m $P$G $E[0m GOTO FIN :AYUDA UTILIZACION: Teclear NORMAL en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes modifica el PROMPT para mostrar el PROMPT predeterminado del sistema ( y solo él) en color azul. :FIN PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $E introduce una secuencia de escape [pc1;pc2;pc3m donde pc1 pc2 y pc3 son números que internamente son color de fondo, color de tinta y apariencia. $P pone la unidad y ruta actuales. $G pone el símbolo mayor que >
3 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 4.- Escribir el proceso por lotes PERSONAL.BAT que muestre un PROMPT a gusto del usuario. EDIT PERSONAL.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $E[1;33m –Alfredo- $E[0m $E[32m $P$G $E[0m GOTO FIN :AYUDA UTILIZACION: Teclear PERSONAL en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes modifica el PROMPT para ponerlo a gusto del creador del mismo :FIN PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $E introduce una secuencia de escape [pc1;pc2;pc3m donde pc1 pc2 y pc3 son números que internamente son color de fondo, color de tinta y apariencia. --Alfredo-- es texto $P pone la unidad y ruta actuales. $G pone el símbolo mayor que > $E[0m suelta la brocha de la tinta
4 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 5.- Escribir el proceso por lotes ETIQUETA.BAT que muestre un rotulo identificativo, con 2 líneas, en la esquina superior derecha del monitor. EDIT ETIQUETA.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $E[s $E[31;42m $E[2;55H Alfredo $E[0m $E[33;1m $E[3;55HPamosGarrido $E[u $E[0m $P$G GOTO FIN :AYUDA UTILIZACION: Teclear ETIQUETA en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes muestra un rotulo identificativo, con 2 líneas, en la esquina superior derecha del monitor. :FIN PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $E introduce una secuencia de escape [pc1;pc2;pc3m donde pc1 pc2 y pc3 son números que internamente son color de fondo, color de tinta y apariencia. Alfredo, Pamos Garrido es texto que se mostrará en pantalla. $P pone la unidad y ruta actuales. $G pone el símbolo mayor que > $E[0m suelta la brocha de la tinta $E[s Salva la posición actual del cursor $E[u Reestablece la posición del cursor previamente salvada por $E[s
5 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 6.- Escribir el proceso por lotes 8025C.BAT que establezca el modo de visualización en 80 columnas y 25 filas a color EDIT 8025C.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $E[=3h $P$G GOTO FIN :AYUDA UTILIZACION: Teclear 8025C en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes establece el modo de visualización en 80 columnas y 25 filas a color :FIN PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $E introduce una secuencia de escape $E[=psh Establece el modo de visualización. $P pone la unidad y ruta actuales. $G pone el símbolo mayor que >
6 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 07. Escribir el proceso por lotes KEY10DIR.BAT que altere la tecla F10 de tal modo que genere el comando DIR *.COM. EDIT KEY10DIR.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $E[0;68;”DIR *.COM”13p$P$G GOTO FIN :AYUDA UTILIZACION: Teclear KEY10DIR en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes altera la tecla F10 de tal modo que genera el comando DIR *.COM :FIN F10 DIR *.com PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $E introduce una secuencia de escape $E[codigo_tecla;”cadena”p Redefine una tecla 13 pulsa intro internamente. $P pone la unidad y ruta actuales. $G pone el símbolo mayor que >
7 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 08. Escribir el proceso por lotes GOSUB.BAT que lance otro proceso batch y vuelva. EDIT GOSUB.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA ECHO ESTOY EN GOSUB.BAT CALL AUXILIAR.BAT ECHO HE IDO A AUXILIAR.BAT Y HE VUELTO :AYUDA UTILIZACION: Teclear GOSUB en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes establece lanza otro proceso batch y vuelve. EDIT AUXILIAR.BAT @ECHO OFF ECHO ESTOY EN AUXILIAR.BAT
8 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
GOSUB:BAT @ECHO OFF ECHO ESTOY EN GOSUB.BAT
CALL AUXILIAR.BAT AUXILIAR.BAT @ECHO OFF ECHO ESTOY EN AUXILIAR.BAT GOSUB.BAT ECHO VUELVO A ESTAR EN GOSUB.BAT
FIN
9 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 09. Escribir el proceso por lotes EXISTEF.BAT que detecte la existencia o no de un archivo en el disco. EDIT EXISTEF.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA IF EXIST AUXILIAR.BAT GOTO SI :NO ECHO EL ARCHIVO NO EXISTE GOTO FIN :SI ECHO EL ARCHIVO SI EXISTE GOTO FIN :AYUDA UTILIZACION: Teclear EXISTEF en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes te dice la existencia de un archivo o no de un archivo en el disco. :FIN ECHO FIN
10 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI IF”%1”==”/?”
NO
:SI IF EXIST AUXILIAR.BAT GOTO SI
SI
ECHO EL ARCHIVO EXISTE GOTO FIN
NO
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
:NO ECHO EL ARCHIVO NO EXISTE GOTO FIN
:FIN FIN
11 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 10. Escribir el proceso por lotes EXISTED.BAT que detecte la existencia o no de un directorio en el disco. EDIT EXISTED.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA IF EXIST C:\DOS\NUL GOTO SI :NO ECHO EL DIRECTORIO NO EXISTE GOTO FIN :SI ECHO EL DIRECTORIO SI EXISTE GOTO FIN :AYUDA UTILIZACION: Teclear EXISTED en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes te dice la existencia o no de un directorio en el disco. :FIN ECHO FIN
12 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI IF”%1”==”/?”
NO
IF EXIST C:\DOS\NUL GOTO SI
:SI SI
ECHO EL DIRECTORIO EXISTE GOTO FIN
NO
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
:NO ECHO EL DIRECTORIO NO EXISTE GOTO FIN
:FIN FIN
13 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 11. Escribir el proceso por lotes DELAY.BAT que inserte un retardo de 10 segundos en la ejecución de un proceso batch. @ECHO OFF IF “%1”==”/?” GOTO AYUDA ECHO PROGRAMA QUE INTRODUCE UNA PAUSA DE 10 SEG EN LA EJECUCION CHOICE /C:Cc /T:C,10 ECHO YA HAN PASADO 10 SEGUNDOS GOTO FIN :AYUDA UTILIZACION: Teclear DELAY en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes inserta un retardo de 10 segundos en la ejecución. :FIN ECHO FIN
14 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI
IF”%1”==”/?”
ECHO PROGRAMA QUE INTRODUCE UNA PAUSA DE 10 SEG EN LA EJECUCION
NO
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
CHOICE /C:Cc /T:C 10
SI
HAN PASADO 10 SEG
ECHO YA HAN PASADO 10 SEGUNDOS
FIN 15 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 12. Modificar el proceso EXISTEF.BAT, convirtiéndolo en EXISTEF2.BAT, para que admita nombres de archivo enviados como parámetros reemplazables. Ej.: C:\EXISTEF2 archivo.txt EDIT EXISTEF2.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA IF EXIST %1 GOTO SI :NO ECHO NO EXISTE GOTO FIN :SI ECHO SI EXISTE GOTO FIN :AYUDA UTILIZACION: Teclear EXISTEF2 en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta y luego un espacio en blanco y la ruta y el nombre del archivo que se desea comprobar si existe. SINTAXIS: Este proceso por lotes te dice la existencia de un archivo o no en el disco, enviándole como parámetro reemplazable el nombre del fichero. :FIN ECHO FIN
16 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI IF”%1”==”/?”
NO
:SI IF EXIST %1 GOTO SI
SI
ECHO EL ARCHIVO EXISTE GOTO FIN
NO
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
:NO ECHO EL ARCHIVO NO EXISTE GOTO FIN
:FIN FIN
17 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 13. Modificar el proceso EXISTED.BAT, convirtiéndolo en EXISTED2.BAT, para que admita nombres de directorio enviados como parámetros reemplazables. Ej.: C:\EXISTED2 c:\prueba EDIT EXISTED2.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA IF EXIST %1\NUL GOTO SI :NO ECHO EL DIRECTORIO NO EXISTE GOTO FIN :SI ECHO EL DIRECTORIO SI EXISTE GOTO FIN :AYUDA UTILIZACION: Teclear EXISTED2 en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta y a continuación un espacio en blanco y la ruta del directorio que se desea comprobar si existe SINTAXIS: Este proceso por lotes te dice la existencia o no de un directorio en el disco, enviándole como parámetro reemplazable el directorio. :FIN ECHO FIN
18 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI IF”%1”==”/?”
NO
IF EXIST %1\NUL GOTO SI
:SI SI
ECHO EL DIRECTORIO EXISTE GOTO FIN
NO
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
:NO ECHO EL DIRECTORIO NO EXISTE GOTO FIN
:FIN FIN
19 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 14. Modificar el proceso DELAY.BAT, convirtiéndolo en DELAY2.BAT, para que admita el envió de un número de segundos como parámetros reemplazables. Ej.: C:\DELAY2 30 EDIT DELAY2.BAT @ECHO IF “%1”==”/?” GOTO AYUDA ECHO ESTO ES UN PROCESO POR LOTES QUE INTRODUCE UNA PAUSA DE %1 SEGUNDOS CHOICE /C:Cc /T:C,%1 ECHO YA HAN PASADO %1 SEGUNDOS GOTO FIN :AYUDA UTILIZACION: Teclear DELAY2 en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta y a continuación un espacio en blanco y luego un numero que será el numero de segundos de la pausa en el proceso por lotes SINTAXIS: Este proceso por lotes inserta un retardo de %1 segundos en la ejecución, siendo %1 un parámetro reemplazable introducido por teclado a continuación del nombre del proceso por lotes. :FIN
20 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI
IF”%1”==”/?”
ECHO PROGRAMA QUE INTRODUCE UNA PAUSA DE 10 SEG EN LA EJECUCION
NO
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
CHOICE /C:Cc /T:C,%1
SI
HAN PASADO %1 SEG
ECHO YA HAN PASADO %1 SEGUNDOS
FIN 21 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 15. Escribir el proceso por lotes MODKEY10.BAT que altere la tecla F10 de tal modo que genere un comando enviado como parámetro reemplazable. Ej.: C:\>MODKEY1 cls EDIT MODKEY10.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA PROMPT $E[0;68;”%1”;13p$P$G GOTO FIN :AYUDA UTILIZACION: Teclear MODKEY10 en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes altera la tecla F10 de tal modo que genera un comando enviado como parámetro reemplazable. :FIN
PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $E introduce una secuencia de escape $E[codigo_tecla;”cadena”p Redefine una tecla 13 pulsa intro internamente. 0;68 código tecla F10 %1 comando que hará al pulsar la tecla F10 $P pone la unidad y ruta actuales. $G pone el símbolo mayor que >
22 de 55
S.I.M.M.
Alfredo Pamos Garrido
INICIO
IF “%1”==”/?”
SI
NO
PROMPT $E[0;68;”%1”;13p$P$G
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
:FIN FIN
23 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 16. Escribir el proceso por lotes RESTKEY.BAT que altere la tecla Fx de tal modo que vuelva a su valor original. Ej.: C:\RESTKEY f10 EDIT RESTKEY.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA IF “%1”==”F9” GOTO F9 IF “%1”==”F10” GOTO F10 IF “%1”==”F11” GOTO F11 IF “%1”==”F12” GOTO F12 GOTO FIN :F9 PROMPT $E[0;67;0;67;13p$P$G GOTO FIN :F10 PROMPT $E[0;68;0;68;13p$P$G GOTO FIN :F11 PROMPT $E[0;133;0;133;13p$P$G GOTO FIN :F12 PROMPT $E[0;134;0;134;13p$P$G GOTO FIN :AYUDA UTILIZACION: Teclear RESTKEY en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta y a continuación un espacio en blanco y luego la tecla que desea restaurar. SINTAXIS: Este proceso por lotes modifica el una tecla introduciendo el código que le corresponde. :FIN PROMPT Comando que modifica la apariencia del inductor del sistema de MSDOS. $E introduce una secuencia de escape $E[codigo_tecla;”cadena”p Redefine una tecla 13 pulsa intro internamente. $P pone la unidad y ruta actuales. $G pone el símbolo mayor que >
24 de 55
S.I.M.M.
Alfredo Pamos Garrido
INICIO
:AYUDA IF “%1”==”/?”
SI
AYUDA ECHO SINTAXIS ECHO UTILIZACION
NO
:F9 IF “%1”==”F9”
SI
PROMPT $E[0;67;0;67;13p$P$G
NO
:F10 SI IF “%1”==”F10”
PROMPT $E[0;68;0;68;13p$P$G
NO
:F11 IF “%1”==”F11”
NO
SI
PROMPT $E[0;133;0;133;13p$P$G
25 de 55
S.I.M.M.
Alfredo Pamos Garrido
:F12 PROMPT $E[0;134;0;134;13p$P$G
SI IF “%1”==”F12”
NO
:FIN FIN
26 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 17. Escribir el proceso por lotes PARAM.BAT que muestre en pantalla el número y el contenido de los parámetros que le son enviados. Ej: C:\>PARAM a b c d EDIT PARAM.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA IF “%9”==”” GOTO OCHO ECHO HA INTRODUCIDO NUEVE PARAMETROS Y SON: (%1 %2 %3 %4 %5 %6 %7 %8 Y %9) GOTO FIN :OCHO IF “%8”==”” GOTO SIETE ECHO HA INTRODUCIDO OCHO PARAMETROS Y SON: (%1 %2 %3 %4 %5 %6 %7 Y %8) GOTO FIN :SIETE IF “%7”==”” GOTO SEIS ECHO HA INTRODUCIDO SIETE PARAMETROS Y SON: (%1 %2 %3 %4 %5 %6 Y %7) GOTO FIN :SEIS IF “%6”==”” GOTO CINCO ECHO HA INTRODUCIDO SEIS PARAMETROS Y SON: (%1 %2 %3 %4 %5 Y %6) GOTO FIN :CINCO IF “%5”==”” GOTO CUATRO ECHO HA INTRODUCIDO CINCO PARAMETROS Y SON: (%1 %2 %3 %4 Y %5) GOTO FIN :CUATRO IF “%4”==”” GOTO TRES ECHO HA INTRODUCIDO CUATRO PARAMETROS Y SON: (%1 %2 %3 Y %4) GOTO FIN :TRES IF “%3”==”” GOTO DOS ECHO HA INTRODUCIDO TRES PARAMETROS Y SON: (%1 %2 Y %3) GOTO FIN :DOS IF “%2”==”” GOTO UNO 27 de 55
S.I.M.M.
Alfredo Pamos Garrido
ECHO HA INTRODUCIDO DOS PARAMETROS Y SON: (%1 Y %2) GOTO FIN :UNO IF “%1”==”” GOTO CERO ECHO HA INTRODUCIDO UN PARAMETROS Y ES: (%1) GOTO FIN :CERO ECHO NO HA INTRODUCIDO NINGUN PARAMETRO GOTO FIN :AYUDA UTILIZACION: Teclear PARAM en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta y luego separados por espacios en blanco introducir los parámetros que desee. SINTAXIS: Este proceso por lotes te dice cuantos parámetros reemplazables ha introducido y cuales son. GOTO FIN :FIN
28 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI %1 == “/?”
NO
NO %9 == “”
9 PARAMETROS
SI :AYUDA :OCHO
AYUDA ECHO SINTAXIS ECHO UTILIZACION
NO %8 == “”
8 PARAMETROS
SI :SIETE NO %7 == “”
7 PARAMETROS
SI :SEIS NO 6 PARAMETROS
%6 == “”
29 de 55
S.I.M.M.
Alfredo Pamos Garrido
18. Escribir el proceso por lotes PARA2VAR.BAT que almacena en variables y muestre en pantalla los datos enviados como parámetros. Ej. C:\>PARA2VAR a 4 d 23 hola EDIT PARA2VAR.BAT @ECHO OFF IF NOT "%9"=="" GOTO NUEVE :PARAM_8 IF NOT "%8=="" GOTO OCHO :PARAM_7 IF NOT "%7=="" GOTO SIETE :PARAM_6 IF NOT "%6=="" GOTO SEIS :PARAM_5 IF NOT "%5=="" GOTO CINCO :PARAM_4 IF NOT "%4=="" GOTO CUATRO :PARAM_3 IF NOT "%3=="" GOTO TRES :PARAM_2 IF NOT "%2"=="" GOTO DOS :PARAM_1 IF NOT "%1"=="" GOTO UNO GOTO FIN :NUEVE SET p9=%9 ECHO EL NOVENO PARÁMETRO HA SIDO: %p9% GOTO PARAM_8 :OCHO SET p8=%8 ECHO EL OCTAVO PARÁMETRO HA SIDO: %p8% GOTO PARAM_7 :SIETE SET p7=%7 ECHO EL SEPTIMO PARÁMETRO HA SIDO: %p7% GOTO PARAM_6 :SEIS SET p6=%6 ECHO EL SEXTO PARÁMETRO HA SIDO: %p6% GOTO PARAM_5 :CINCO SET p5=%5 ECHO EL QUINTO PARAMETRO HA SIDO: %p5% GOTO PARAM_4 :CUATRO SET p4=%4 ECHO EL CUARTO PARÁMETRO HA SIDO: %p4% GOTO PARAM_3 30 de 55
S.I.M.M.
Alfredo Pamos Garrido
:TRES SET p3=%3 ECHO EL TERCER PARÁMETRO HA SIDO: %p3% GOTO PARAM_2 :DOS SET p2=%2 ECHO EL SEGUNDO PARÁMETRO HA SIDO: %p2% GOTO PARAM_1 :UNO SET p1=%1 ECHO EL PRIMER PARÁMETRO HA SIDO: %p1% :FIN
31 de 55
S.I.M.M.
Alfredo Pamos Garrido
INICIO
SI %1 == “/?”
NO :PARAM_9 :NUEVE SI
%9 NOT == “”
SET p9=%9 ECHO EL NOVENO PARAMETRO ES: %p9%
NO :PARAM_8 :OCHO SI
%8 NOT == “”
SET p8=%8 ECHO EL OCTAVO PARAMETRO ES: %p8%
NO :PARAM_7 :SIETE SI
%7 NOT == “”
SET p7=%7 ECHO EL OCTAVO PARAMETRO ES: %p7%
NO
:PARAM_6 :SEIS %6 NOT == “”
SI
SET p6=%6 ECHO EL SEXTO PARAMETRO ES: %p6%
32 de 55
S.I.M.M.
Alfredo Pamos Garrido :PARAM_5
:CINCO SET p5=%5 ECHO EL QUINTO PARAMETRO ES: %p5%
%5 NOT == “”
:PARAM_4 :CUATRO %4 NOT == “”
SI
SET p4=%4 ECHO EL CUARTO PARAMETRO ES: %p4%
NO
:PARAM_3 :TRES %3 NOT == “”
SI
SET p3=%3 ECHO EL TERCER PARAMETRO ES: %p3%
NO
:PARAM_2 %2 NOT == “”
SI
:DOS SET p2=%2 ECHO EL SEGUNDO PARAMETRO ES: %p2%
NO
:PARAM_1 :UNO %1 NOT == “”
SI
SET p1=%1 ECHO EL PRIMER PARAMETRO ES: %p1% :AYUDA
AYUDA ECHO UTILIZACION ECHO SINTAXIS FIN 33 de 55
S.I.M.M.
Alfredo Pamos Garrido
18. Escribir el proceso por lotes PARA2VAR.BAT que almacena en variables y muestre en pantalla los datos enviados como parámetros. Ej. C:\>PARA2VAR a 4 d 23 hola EDIT PARA2VAR.BAT @ECHO OFF IF NOT "%9"=="" GOTO NUEVE :PARAM_8 IF NOT "%8=="" GOTO OCHO :PARAM_7 IF NOT "%7=="" GOTO SIETE :PARAM_6 IF NOT "%6=="" GOTO SEIS :PARAM_5 IF NOT "%5=="" GOTO CINCO :PARAM_4 IF NOT "%4=="" GOTO CUATRO :PARAM_3 IF NOT "%3=="" GOTO TRES :PARAM_2 IF NOT "%2"=="" GOTO DOS :PARAM_1 IF NOT "%1"=="" GOTO UNO GOTO FIN :NUEVE SET p9=%9 ECHO EL NOVENO PARÁMETRO HA SIDO: %p9% GOTO PARAM_8 :OCHO SET p8=%8 ECHO EL OCTAVO PARÁMETRO HA SIDO: %p8% GOTO PARAM_7 :SIETE SET p7=%7 ECHO EL SEPTIMO PARÁMETRO HA SIDO: %p7% GOTO PARAM_6 :SEIS SET p6=%6 ECHO EL SEXTO PARÁMETRO HA SIDO: %p6% GOTO PARAM_5 :CINCO SET p5=%5 ECHO EL QUINTO PARAMETRO HA SIDO: %p5% GOTO PARAM_4 :CUATRO SET p4=%4 ECHO EL CUARTO PARÁMETRO HA SIDO: %p4% GOTO PARAM_3 34 de 55
S.I.M.M.
Alfredo Pamos Garrido
:TRES SET p3=%3 ECHO EL TERCER PARÁMETRO HA SIDO: %p3% GOTO PARAM_2 :DOS SET p2=%2 ECHO EL SEGUNDO PARÁMETRO HA SIDO: %p2% GOTO PARAM_1 :UNO SET p1=%1 ECHO EL PRIMER PARÁMETRO HA SIDO: %p1% :FIN
35 de 55
S.I.M.M.
Alfredo Pamos Garrido
INICIO
SI %1 == “/?”
NO :PARAM_9 :NUEVE SI
%9 NOT == “”
SET p9=%9 ECHO EL NOVENO PARAMETRO ES: %p9%
NO :PARAM_8 :OCHO SI
%8 NOT == “”
SET p8=%8 ECHO EL OCTAVO PARAMETRO ES: %p8%
NO :PARAM_7 :SIETE SI
%7 NOT == “”
SET p7=%7 ECHO EL OCTAVO PARAMETRO ES: %p7%
NO
:PARAM_6 :SEIS %6 NOT == “”
SI
SET p6=%6 ECHO EL SEXTO PARAMETRO ES: %p6%
36 de 55
S.I.M.M.
Alfredo Pamos Garrido :PARAM_5
:CINCO SET p5=%5 ECHO EL QUINTO PARAMETRO ES: %p5%
%5 NOT == “”
:PARAM_4 :CUATRO %4 NOT == “”
SI
SET p4=%4 ECHO EL CUARTO PARAMETRO ES: %p4%
NO
:PARAM_3 :TRES %3 NOT == “”
SI
SET p3=%3 ECHO EL TERCER PARAMETRO ES: %p3%
NO
:PARAM_2 %2 NOT == “”
SI
:DOS SET p2=%2 ECHO EL SEGUNDO PARAMETRO ES: %p2%
NO
:PARAM_1 :UNO %1 NOT == “”
SI
SET p1=%1 ECHO EL PRIMER PARAMETRO ES: %p1% :AYUDA
AYUDA ECHO UTILIZACION ECHO SINTAXIS FIN 37 de 55
S.I.M.M.
Alfredo Pamos Garrido
19. Escribir el proceso por lotes AYUDA.BAT que muestre en pantalla la información referente a la sintaxis correcta de un comando enviado como parámetro reemplazable ( funcionamiento similar a HELP comando) Ej: C:\AYUDA para2var @ECHO OFF IF "%1"=="" GOTO SINTAXIS IF "%1"=="DATETIME" GOTO DATETIME IF "%1"=="HORAMIN" GOTO HORAMIN IF "%1"=="NORMAL" GOTO NORMAL GOTO FIN :SINTAXIS ECHO ESCRIBA AYUDA NOMBRE_PROCESO_POR_LOTES GOTO FIN :DATETIME UTILIZACION: Teclear DATETIME en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes modifica el PROMPT para mostrar la fecha y la hora actuales en dos líneas. GOTO FIN :HORAMIN UTILIZACION: Teclear HORAMIN en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes modifica el PROMPT para mostrar la hora y minutos actuales. GOTO FIN :NORMAL :AYUDA UTILIZACION: Teclear NORMAL en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes modifica el PROMPT para mostrar el PROMPT predeterminado del sistema ( y solo él) en color azul. GOTO FIN :FIN
38 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
ECHO AYUDA ECHO SINTAXIS ECHO UTILIZACION
SI IF”%1”==”/?”
NO
SI IF”%1”==”DATETIME”
ECHO AYUDA ECHO SINTAXIS ECHO UTILIZACION
NO
SI
ECHO AYUDA ECHO SINTAXIS ECHO UTILIZACION
SI
ECHO AYUDA ECHO SINTAXIS ECHO UTILIZACION
IF”%1”==”HORAMIN”
NO
IF”%1”==”NORMAL”
MAS BATCH
FIN 39 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 20. Escribir el proceso por lotes DIR2TXT.BAT que envie el contenido del directorio indicado a un archivo de texto, indicando añadir o reemplazar el contenido previo. Ej: C:\>DIR2TXT c:\dos archivo.txt a|r EDIT DIR2TXT.BAT @ECHO OFF IF “%1”==”/?” GOTO AYUDA IF EXIST %1\NUL GOTO EXISTE ECHO EL DIRECTORIO NO EXISTE GOTO AYUDA :EXISTE IF %3=="A" GOTO AÑADIR %1>%2 :AÑADIR IF EXIST %2 GOTO EXISTEA ECHO EL ARCHIVO NO EXSITE GOTO AYUDA :EXISTEA %1>>%2 GOTO FIN :AYUDA ECHO AYUDA GOTO FIN :FIN
40 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI IF”%1”==”/?”
NO
:SI SI
IF EXIST %1\NUL GOTO SI
ECHO EL DIRECTORIO EXISTE
NO :NO SI ECHO EL DIRECTORIO NO EXISTE GOTO FIN
IF %3==A GOTO AÑADIR
NO :AÑADIR
IF EXIST %2 GOTO EXISTEA
SI
NO %1>%2
:AYUDA
:EXISTEA
AYUDA ECHO SINTAXIS ECHO UTILIZACION
%1>>%2 :FIN FIN 41 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 21. Escribir el proceso por lotes ORIGINAL.BAT que detecte el cambio de nombre del archivo batch en ejecución y lo renombre a su valor original EDIT ORIGINAL.BAT @ECHO OFF SET ORIGINAL=ORIGINAL IF “%1”==”/?” GOTO AYUDA IF NOT "%0" == "ORIGINAL" GOTO CREARNOMBRADOR ECHO MUY BIEN ES EL NOMBRE CORRECTO DEL PROGRAMA GOTO FIN :CREARNOMBRADOR GOTO EJECUTAR ECHO @ECHO OFF > RENOMBRE.BAT ECHO REN %%1.BAT %%2.BAT >> RENOMBRE.BAT ECHO ECHO NO VUELVA A CAMBIARLE EL NOMBRE A MI PROGRAMA >> RENOMBRE.BAT RENOMBRE %0 %ORIGINAL% :EJECUTAR RENOMBRE %0 %ORIGINAL% SET ORIGINAL= :AYUDA UTILIZACION: Teclear ORIGINAL en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes comprueba que el nombre con el que se esta ejecutando este proceso es el nombre que le puso el creador o es otro, de ser así lo renombra a como el creador lo llamó. :FIN
42 de 55
S.I.M.M.
Alfredo Pamos Garrido
@ECHO OFF
SI IF”%1”==”/?”
NO
IF NOT "%0" == "ORIGINAL"
SI
ECHO NOMBRE CORRECTO GOTO FIN
NO
:AYUDA
:CREARNOMBRADOR ECHO @ECHO OFF > RENOMBRE.BAT ECHO REN %%1.BAT %%2.BAT >> RENOMBRE.BAT ECHO ECHO NO VUELVA A CAMBIARLE EL NOMBRE A MI PROGRAMA >> RENOMBRE.BAT RENOMBRE %0 %ORIGINAL%
FIN 43 de 55
AYUDA ECHO SINTAXIS ECHO UTILIZACION
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 22. Escribir el proceso por lotes COLOR.BAT que modifique el color de fondo y tinta del shell. Ej: C:\COLOR 40 37 EDIT COLOR.BAT @ECHO OFF IF"%1"=="/?" GOTO AYUDA PROMPT $E[%1;%2m $P$G GOTO FIN :AYUDA ECHO. ECHO ESCRIBA: COLOR NUMERO_TINTA NUMERO_FONDO ECHO. ECHO COLORES DE LA TINTA: ECHO $E[30;47m 30 NEGRO $E [0m ECHO $E[31m 31 ROJO $E [0m ECHO $E [32m 32 VERDE $E [0m ECHO $E [33m 33 AMARILLO $E [0m ECHO $E [34m 34 AZUL $E [0m ECHO $E [35m 35 MAGENTA $E [0m ECHO $E [36m 36 CIAN $E [0m ECHO $E [37m 37 BLANCO $E [0m ECHO. ECHO COLORES DE FONDO: ECHO. ECHO $E [30;47m 40 NEGRO $E [0m ECHO $E [31m 41 ROJO $E [0m ECHO $E [32m 42 VERDE $E [0m ECHO $E [33m 43 AMARILLO $E [0m ECHO $E [34m 44 AZUL $E [0m ECHO $E [35m 45 MAGENTA $E [0m ECHO $E [36m 46 CIAN $E [0m ECHO $E [37m 47 BLANCO $E [0m :FIN
44 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 23. Escribir el proceso por lotes CIFRAS.BAT que obtenga una cifra, de cualquier longitud, por teclado. EDIT CIFRAS.BAT @ECHO OFF SET NUMERO= CLS IF “%1”==”/?” GOTO AYUDA ECHO PULSE T PARA TERMINAR, ESCRIBE UN NUMERO: :INICIO CHOICE /C:0123456789tT /n CLS IF ERRORLEVEL 11 GOTO FINESCRIBIR IF ERRORLEVEL 10 GOTO 9 IF ERRORLEVEL 9 GOTO 8 IF ERRORLEVEL 8 GOTO 7 IF ERRORLEVEL 7 GOTO 6 IF ERRORLEVEL 6 GOTO 5 IF ERRORLEVEL 5 GOTO 4 IF ERRORLEVEL 4 GOTO 3 IF ERRORLEVEL 3 GOTO 2 IF ERRORLEVEL 2 GOTO 1 IF ERRORLEVEL 1 GOTO 0 :9 SET NUMERO=%NUMERO%9 GOTO ESCRIBIR :8 SET NUMERO=%NUMERO%8 GOTO ESCRIBIR :7 SET NUMERO=%NUMERO%7 GOTO ESCRIBIR :6 SET NUMERO=%NUMERO%6 GOTO ESCRIBIR :5 SET NUMERO=%NUMERO%5 GOTO ESCRIBIR :4 SET NUMERO=%NUMERO%4 GOTO ESCRIBIR :3 SET NUMERO=%NUMERO%3 GOTO ESCRIBIR 45 de 55
S.I.M.M.
Alfredo Pamos Garrido
:2 SET NUMERO=%NUMERO%2 GOTO ESCRIBIR :1 SET NUMERO=%NUMERO%1 GOTO ESCRIBIR :AYUDA UTILIZACION: Teclear CIFRAS en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes obtiene una cifra de cualquier longitud, por teclado. :ESCRIBIR ECHO %NUMERO% GOTO INICIO :FINESCRIBIR ECHO EL NUMERO INTRODUCIDO ES %NUMERO%
46 de 55
S.I.M.M.
Alfredo Pamos Garrido
INICIO
IF”%1”==”/?”
SI
NO INICIALIZAR
PEDIR PULSACION
NO
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
CHOICE /C:1234567 89Tt /N
SI NUMERO=%NUMERO% 1 o 2 o 3 o 4 o 5 o 6 o 7 o 8 o9
FIN
47 de 55
S.I.M.M.
Alfredo Pamos Garrido
Alfredo Pamos Garrido 24. Escribir el proceso por lotes CIFRAS3.BAT que obtenga una cifra de 3 dígitos por teclado. @ECHO OFF SET NUMERO= SET CONTADOR= CLS ECHO ESCRIBE UN NUMERO: :INICIO IF "%CONTADOR%"=="111" GOTO FINESCRIBIR SET CONTADOR=%CONTADOR%1 CHOICE /C:0123456789 /N CLS IF ERRORLEVEL 10 GOTO 9 IF ERRORLEVEL 9 GOTO 8 IF ERRORLEVEL 8 GOTO 7 IF ERRORLEVEL 7 GOTO 6 IF ERRORLEVEL 6 GOTO 5 IF ERRORLEVEL 5 GOTO 4 IF ERRORLEVEL 4 GOTO 3 IF ERRORLEVEL 3 GOTO 2 IF ERRORLEVEL 2 GOTO 1 IF ERRORLEVEL 1 GOTO 0 :9 SET NUMERO=%NUMERO%9 GOTO ESCRIBIR :8 SET NUMERO=%NUMERO%8 GOTO ESCRIBIR :7 SET NUMERO=%NUMERO%7 GOTO ESCRIBIR :6 SET NUMERO=%NUMERO%6 GOTO ESCRIBIR :5 SET NUMERO=%NUMERO%5 GOTO ESCRIBIR :4 48 de 55
S.I.M.M.
Alfredo Pamos Garrido
SET NUMERO=%NUMERO%4 GOTO ESCRIBIR :3 SET NUMERO=%NUMERO%3 GOTO ESCRIBIR :2 SET NUMERO=%NUMERO%2 GOTO ESCRIBIR :1 SET NUMERO=%NUMERO%1 GOTO ESCRIBIR :AYUDA UTILIZACION: Teclear CIFRAS en el directorio donde se encuentre el proceso por lotes, de no estar en el directorio donde se encuentre el proceso por lotes especificar la ruta. SINTAXIS: Este proceso por lotes obtiene una cifra de cualquier longitud, por teclado. :ESCRIBIR ECHO %NUMERO% GOTO INICIO :FINESCRIBIR ECHO EL NUMERO ES %NUMERO%
49 de 55
S.I.M.M.
Alfredo Pamos Garrido INICIO
IF”%1”==”/?”
:AYUDA AYUDA ECHO SINTAXIS ECHO UTILIZACION
SI
NO
PEDIR PULSACION
NO
CHOICE /C:123456789 /N
SI
IF%CONTADOR %==”111”
NO
SI SET CONTADOR=%CONTADOR%1
SET NUMERO=%NUMERO% 1o2o3o 4o5o6o7o 8o9
CLS ECHO %NUMERO%
50 de 55
FIN
S.I.M.M.
Alfredo Pamos Garrido
25. Escribir un proceso por lotes llamado PAUSAGR.BAT que inserte un retardo de n segundos (entre 1 y 10), al tiempo que muestra una barra de progreso con la indicacion del tiempo restante. Ej C:\PAUSAGR 8 EDIT PAUSAGR.BAT @ECHO OFF IF "%1"=="10" GOTO 10 IF "%1"=="9" GOTO 9 IF "%1"=="8" GOTO 8 IF "%1"=="7" GOTO 7 IF "%1"=="6" GOTO 6 IF "%1"=="5" GOTO 5 IF "%1"=="4" GOTO 4 IF "%1"=="3" GOTO 3 IF "%1"=="2" GOTO 2 IF "%1"=="1" GOTO 1 :10 cls ECHO -------------------CHOICE /C:Cc10 /T:10,1 /n cls ECHO -----------------CHOICE /C:Cc9 /T:9,1 /n cls ECHO ---------------CHOICE /C:Cc8 /T:8,1 /n cls ECHO -------------CHOICE /C:Cc7 /T:7,1 /n cls ECHO -----------CHOICE /C:Cc6 /T:6,1 /n cls ECHO ---------CHOICE /C:Cc5 /T:5,1 /n cls ECHO -------CHOICE /C:Cc4 /T:4,1 /n cls ECHO -----CHOICE /C:Cc3 /T:3,1 /n cls ECHO ---CHOICE /C:Cc2 /T:2,1 /n cls 51 de 55
S.I.M.M.
Alfredo Pamos Garrido
ECHO -CHOICE /C:Cc1 /T:1,1 /n cls GOTO FIN :9 cls ECHO -----------------CHOICE /C:Cc9 /T:9,1 /n cls ECHO ---------------CHOICE /C:Cc8 /T:8,1 /n cls ECHO -------------CHOICE /C:Cc7 /T:7,1 /n cls ECHO -----------CHOICE /C:Cc6 /T:6,1 /n cls ECHO ---------CHOICE /C:Cc5 /T:5,1 /n cls ECHO -------CHOICE /C:Cc4 /T:4,1 /n cls ECHO -----CHOICE /C:Cc3 /T:3,1 /n cls ECHO ---CHOICE /C:Cc2 /T:2,1 /n cls ECHO -CHOICE /C:Cc1 /T:1,1 /n cls GOTO FIN :8 cls ECHO ---------------CHOICE /C:Cc8 /T:8,1 /n cls ECHO -------------CHOICE /C:Cc7 /T:7,1 /n cls ECHO -----------CHOICE /C:Cc6 /T:6,1 /n cls ECHO ---------CHOICE /C:Cc5 /T:5,1 /n cls 52 de 55
S.I.M.M.
Alfredo Pamos Garrido
ECHO -------CHOICE /C:Cc4 /T:4,1 /n cls ECHO -----CHOICE /C:Cc3 /T:3,1 /n cls ECHO ---CHOICE /C:Cc2 /T:2,1 /n cls ECHO -CHOICE /C:Cc1 /T:1,1 /n cls GOTO FIN :7 cls ECHO -------------CHOICE /C:Cc7 /T:7,1 /n cls ECHO -----------CHOICE /C:Cc6 /T:6,1 /n cls ECHO ---------CHOICE /C:Cc5 /T:5,1 /n cls ECHO -------CHOICE /C:Cc4 /T:4,1 /n cls ECHO -----CHOICE /C:Cc3 /T:3,1 /n cls ECHO ---CHOICE /C:Cc2 /T:2,1 /n cls ECHO -CHOICE /C:Cc1 /T:1,1 /n cls GOTO FIN :6 cls ECHO -----------CHOICE /C:Cc6 /T:6,1 /n cls ECHO ---------CHOICE /C:Cc5 /T:5,1 /n cls ECHO -------CHOICE /C:Cc4 /T:4,1 /n cls 53 de 55
S.I.M.M.
Alfredo Pamos Garrido
ECHO -----CHOICE /C:Cc3 /T:3,1 /n cls ECHO ---CHOICE /C:Cc2 /T:2,1 /n cls ECHO -CHOICE /C:Cc1 /T:1,1 /n cls GOTO FIN :5 cls ECHO ---------CHOICE /C:Cc5 /T:5,1 /n cls ECHO -------CHOICE /C:Cc4 /T:4,1 /n cls ECHO -----CHOICE /C:Cc3 /T:3,1 /n cls ECHO ---CHOICE /C:Cc2 /T:2,1 /n cls ECHO -CHOICE /C:Cc1 /T:1,1 /n cls GOTO FIN :4 cls ECHO -------CHOICE /C:Cc4 /T:4,1 /n cls ECHO -----CHOICE /C:Cc3 /T:3,1 /n cls ECHO ---CHOICE /C:Cc2 /T:2,1 /n cls ECHO -CHOICE /C:Cc1 /T:1,1 /n cls GOTO FIN :3 cls ECHO -----CHOICE /C:Cc3 /T:3,1 /n 54 de 55