martes, 21 de julio de 2009

Ejecutar en orden achivos por lotes

Esta es una receta para solucionar aquel problema que hay cuando tenemos varios .bat y solo hay que ejecutar uno para que arranquen los demás. Pero el usuario abre el que no es.
Ahora vamos a impedir que el usuario haga eso.

Hay un .bat que es el inicial y otros que son los secundarios. Desde el inicial se inician l0s demás, por eso usamos CALL.

@echo off
call 1.bat

Aunque, podemos renstringir el acceso a los secundarios, a menos que se inicien con el .bat inicial.
Eso se hace introduciendo atributos al .bat. Si mal no recuerdo, %0 era el nombre del archivo que se estaba ejecuando y de ahí para alante (%1, %2, %3...) eran los atributos añadidos. %* servía para todos los atributos.
Si añadimos el atributo al .bat secundario desde el inicial, y comprobamos que esto es verdad, como al iniciar el secundario directamente no hemos añadido el atributo, dará error.

Este es el bat inicial:

@echo off
call 1.bat a [a es el atributo añadido al otro .bat]

Y esto es lo que tenemos que poner en el secundario:

@echo off
if "%1"=="" (
color 0c
echo.
echo Este archivo solo se puede ejecutar con el .bat inicial.
echo Pulse cualquier tecla para salir.
pause>nul
exit
)

Así comprobamos si hay atributo, es decir, si se ha iniciado desde el .bat inicial.
Espero que lo entendáis. :)

No hay comentarios: