elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ejecutar archivo bat automáticamente
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecutar archivo bat automáticamente  (Leído 1,290 veces)
Tonino

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ejecutar archivo bat automáticamente
« en: 29 Octubre 2024, 18:26 pm »

Buenas!

Tengo una duda con 2 archivos llamados ses.bat y compila.bat

Cuando ejecutas el primero, que dentro está la instrucción "start", se abre una ventana que espera para que pongas:

compila.bat

y entonces se ejecute el archivo

Mi duda es que he creado un IDE con botones, uno de los cuales pone "COMPILE" y enlaza con el archivo ses.bat

Me gustaría saber si es posible ejecutar el archivo bat automáticamente al pulsar el botón "COMPILE", sin tener que estar escribiendo compila.bat cada vez

Aquí una foto al ejecutar ses.bat



Aquí el código del archivo compila.bat

Código:
cls
color 1E
echo off
echo.
echo    8888   BBBBBB   PPPPPP
echo   88  88   BB  BB   PP  PP
echo   88  88   BB  BB   PP  PP
echo    8888    BBBBB    PPPPP     
echo   88  88   BB  BB   PP                       
echo   88  88   BB  BB   PP
echo    8888   BBBBBB   PPPP
echo 8 bits de poder . Un tributo al AMSTRAD CPC                 
echo Jose Javier Garcia Aranda 2016-2020
echo.
echo  *********************************************
echo  *        compilacion con SDCC               *
echo  *********************************************
echo  borramos los ficheros de compilacion anterior
echo  *********************************************
del output\game.*

if exist "output\game.dsk" (
color 4e
  echo   "+--------------------------------------+"
  echo   "|   desconecta el ciclo.dsk del winape |"
  echo   "|si esta conectado no se puede recrear |"
  echo   "+--------------------------------------+"
  goto end
 
) else (
 rem ok
)

echo.
echo.
echo  main.c : compilamos y linkamos, generando un main.ihx
echo  ********************************************
echo sdcc -mz80 --verbose --code-loc 7000 --data-loc 0 --no-std-crt0 --fomit-frame-pointer --opt-code-size -I8BP_wrapper -Imini_BASIC game.c
sdcc -mz80 --verbose --code-loc 7000 --data-loc 0 --no-std-crt0 --fomit-frame-pointer --opt-code-size -I8BP_wrapper -Imini_BASIC -o output/ game.c

echo .

if not exist "output/game.map" (
  color 4e
  echo   "+-------------------------------+"
  echo   "|   HAY ERRORES DE COMPILACION! |"
  echo   "+-------------------------------+"
  goto end
 
) else (
  color 2e
)

echo   FICHERO game.map generado correctamente
echo.
echo.
echo  Debes consultar el fichero ciclo.map para averiguar la direccion de cualquier funcion
echo  y sobre todo la funcion  _main, la direccion mas baja la he fijado en 20000 ( 0x4e20)
echo  ojo: Comprueba que la direccion mayor no exceda de 23999 (0x5DBF).Si excede estaras
echo       destruyendo la libreria 8BP. Si es mayor, entonces intenta ensamblar desde una
echo       direccion mas baja,por ejemplo 19000. Y en el programa basic pon MEMORY 18999
echo  =====================================================================================
echo.
echo  transformamos el .ihx en un .bin
echo  ********************************************
echo  hex2bin output\game.ihx
hex2bin output\game.ihx

echo.
echo.
echo  metemos el .bin en un disco de amstrad cpc
echo  ********************************************
echo  managedsk -C -S"output\game.dsk"
managedsk -C -S"output\game.dsk"
echo  managedsk -L"output\game.dsk" -I"output\game.bin"/GAME.BIN/BIN/20000 -S"output\game.dsk"
managedsk -L"output\game.dsk" -I"output\game.bin"/GAME.BIN/BIN/7000 -S"output\game.dsk"

echo.
echo.
echo  "***********************************************************"
echo  "*                   FIN DEL PROCESO                       *"
echo  "*  ASEGURATE DE QUE NO EXCEDES LA DIRECCION 24000         *"
echo  "* es la (highest address) de la transformacion ihx en bin *"
echo  "*                                                         *"
echo  "* se ha generado ciclo.dsk y dentro esta ciclo.bin        *"
echo  "*                                                         *"
echo  "* Pasos para cargarlo en el amstrad                       *"
echo  "* 1) carga o ensambla 8BP, con tus graficos, musica etc   *"
echo  "* 2) carga tu juego BASIC                                 *"
echo  "* 3) ejecuta LOAD "game.bin", 20000                      *"
echo  "* para invocar a tu programa o rutina simplemente:        *"
echo  "* call <direccion de main en fichero ciclo.map>           *"
echo  "*                                                         *"
echo  "*  Para mover ciclo.bin de ciclo.dsk a otro disco debes   *"
echo  "*  conocer su longitud:                                   *"
echo  "*   longitud=Highest address - Lowest address             *"
echo  "*   lo cargas desde game.dsk                             *"
echo  "*     LOAD "game.bin", 20000                             *"
echo  "*   Y salvas en el disco donde esta tu juego              *"
echo  "*     SAVE "game.bin",b,20000,longitud                   *"
echo  "***********************************************************"

:end

Gracias!


En línea

Tonino

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ejecutar archivo bat automáticamente
« Respuesta #1 en: 29 Octubre 2024, 19:44 pm »

Bueno, creo que lo he  solucionado

Simplemente he modificado el archivo ses.bat así:

start=compila.bat


Si alguien tiene el mismo problema espero que esto le pueda ayudar

Gracias!


En línea

Danielㅤ


Conectado Conectado

Mensajes: 1.825


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Ejecutar archivo bat automáticamente
« Respuesta #2 en: 30 Octubre 2024, 00:26 am »

Hola, me alegro que hayas solucionado el problema y gracias por dejar la solución

Comento que primera vez que veo ese parámetro en el comando start, es decir éste:

Código
  1. =compila.bat


Saludos
« Última modificación: 30 Octubre 2024, 00:30 am por Danielㅤ » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Ejecutar archivo bat automáticamente
« Respuesta #3 en: 30 Octubre 2024, 13:47 pm »

Comento que primera vez que veo ese parámetro en el comando start, es decir éste:
Código
  1. =compila.bat

Se puede decir que está mal escrito, o escrito de forma innecesaria.

En este caso, lo que ocurre es que ciertos caracteres especiales (delimitadores) simplemente se interpretan como un espacio en blanco:
Código:
start,compila.bat
start;compila.bat
start=compila.bat

Todo lo anterior equivale a esto:
Código:
start compila.bat

Los puedes repetir y combinar cuanto quieras, ya que se traducirán en espacios en blanco:
Código:
start== = ==,;,== = ==compila.bat
Código:
start /B ;=,=; "Título" =;,;= "compila.bat"

¡Saludos!
« Última modificación: 30 Octubre 2024, 13:57 pm por Eleкtro » En línea



Danielㅤ


Conectado Conectado

Mensajes: 1.825


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Ejecutar archivo bat automáticamente
« Respuesta #4 en: 30 Octubre 2024, 14:26 pm »

Muy buena e interesante esa aclaración, de igual manera no sabía que el comando start podía llevar un parámetro que sería un comando a ejecutar (argv) en otra ventana CMD..

Gracias compañero Elektro
En línea

Tonino

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ejecutar archivo bat automáticamente
« Respuesta #5 en: 31 Octubre 2024, 00:06 am »

Hola, me alegro que hayas solucionado el problema y gracias por dejar la solución

Comento que primera vez que veo ese parámetro en el comando start, es decir éste:

Código
  1. =compila.bat


Saludos

Encontré este comando por casualidad, buscando una solución a mi problema

Con ello, evitor tener que escribir "compila.bat", que es otro archivo de la carpeta

Un saludo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines