Cierre del archivo del lote inmediatamente una vez lanzado
Tengo este script para lotes que se supone que es el menú de un juego. Aún no lo he terminado pero me di cuenta de que cuando lo ejecuto inmediatamente se cierra. Si alguien pudiera ayudarme a averiguar el problema lo apreciaría mucho, gracias. Aquí está el código:
@echo off
set save_file_path=C:\Users\maxqs\Desktop\Coding Projects\Personal Project\PathRPG\save_file.txt
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo :oooo+/` -: dy :ooooo/. `ooooo/- -+syys+-
echo oMo::/yMy dM Nm sMo::/yMy `Md::/oNm. :mm+-.-:od+
echo oM/ hM- :dddddy- hNMhhh. Nmohdmd/ sM: mM` `Mh /My :Mh
echo oM/ `/Nd `` `dN dM NN: hM. sM/..-sMo `Mh -dN: hM- `````
echo oMmddhs/ -sdhhhNM` dM Nm oM: sMdydMd` `MNdddy+` yM: +hhmMo
echo oM/ .Md` yM` dM Nm oM: sM: /Nm: `Mh :Md` /Mo
echo oM/ `mm/:/sNM` sMo:/` Nm oM: sM: `sMy` `Mh :dNs/::/yM+
echo -/. `/oo+.:/ :+o+` // -/` -/. -// `/: ./ooo+:.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo [1] Start game
echo [2] End game
set /p input= >
if %input%== 1 goto end_menu
if %input%== 2 goto start_game
:start_game
echo [1] New game
echo [2] Continue
echo [3] Options
set /p input= >
if %input%== 1 goto new_game
if %input%== 2 goto continue_game
if %input%== 3 goto options
:new_game
echo 000#>%save_file_path%
CALL game.bat
goto end_menu
:end_menu
Pregunta hecha hace 3 años, 4 meses, 28 días - Por scriptsphinx
3 Respuestas:
-
Esto es lo que usted código debe parecer, utiliza doble citas, y paréntesis para proteger las cadenas previstas, y la elección. exe como el comando correcto y apropiado para utilizar para solicitar la entrada de uso.
@echo off set "save_file_path=C:\Users\maxqs\Desktop\Coding Projects\Personal Project\PathRPG\save_file.txt" echo. echo. echo. echo. echo. echo. echo. echo. echo. echo. echo. echo. echo. echo. echo. echo. echo :oooo+/` -: dy :ooooo/. `ooooo/- -+syys+- echo oMo::/yMy dM Nm sMo::/yMy `Md::/oNm. :mm+-.-:od+ echo oM/ hM- :dddddy- hNMhhh. Nmohdmd/ sM: mM` `Mh /My :Mh echo oM/ `/Nd `` `dN dM NN: hM. sM/..-sMo `Mh -dN: hM- ````` echo oMmddhs/ -sdhhhNM` dM Nm oM: sMdydMd` `MNdddy+` yM: +hhmMo echo oM/ .Md` yM` dM Nm oM: sM: /Nm: `Mh :Md` /Mo echo oM/ `mm/:/sNM` sMo:/` Nm oM: sM: `sMy` `Mh :dNs/::/yM+ echo -/. `/oo+.:/ :+o+` // -/` -/. -// `/: ./ooo+:. echo. echo. echo. echo. echo. echo. echo. echo. echo [1] Start game echo [2] End game choice /c 12 /n /m ">" if errorlevel 2 goto end_menu :start_game echo [1] New game echo [2] Continue echo [3] Options choice /c 123 /n /m ">" if errorlevel 3 goto options if errorlevel 2 goto continue_game :new_game (echo 000#) > "%save_file_path%" CALL "game.bat" pause goto end_menu :end_menu
BTW, removí los caracteres espaciales sin sentido y desperdicio de su código, los 5376 de ellos obviamente aumentaron su tamaño de script en 5Kb también.
Respondida el Dec 18, 2020 a las 03:37 - por pixelpioneerx
Votos positivos: 0 | Votos negativos: 0 -
El problema principal que está causando que tu script se cierre inmediatamente es la forma en la que estás haciendo la lectura de la opción seleccionada por el usuario. Para solucionar este problema, te sugiero hacer las siguientes modificaciones:
- Utiliza un bucle `do while` para que el script se mantenga abierto hasta que el usuario decida salir explícitamente.
- Para la lectura de las opciones, usa la estructura `set /p` seguido de `if` para comparar la opción seleccionada.
Aquí te muestro un ejemplo de cómo podrías ajustar tu script:
batch @echo off set save_file_path=C:\Users\maxqs\Desktop\Coding Projects\Personal Project\PathRPG\save_file.txt :menu cls echo. echo [1] Start game echo [2] End game set /p input= if "%input%"=="1" goto start_game if "%input%"=="2" exit :start_game cls echo. echo [1] New game echo [2] Continue echo [3] Options set /p input= if "%input%"=="1" ( echo 000
>%save_file_path% CALL game.bat goto menu ) if "%input%"=="2" ( REM Continuar juego goto menu ) if "%input%"=="3" ( REM Opciones goto menu )Con estos cambios, tu script debería mantenerse abierto y permitir al usuario seleccionar las diferentes opciones del menú. Una vez que el usuario elija salir (opción 2), el script se cerrará de forma adecuada. Asegúrate de ajustar cualquier otra parte del script según sea necesario para que se adapte mejor a tus necesidades.
Respondida el Dec 19, 2020 a las 03:37 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El problema es que estás utilizando el comando
CALL
para llamar al scriptgame.bat
, que hará que el script actual se suspenda hasta quegame.bat
haya terminado. Para evitar este comportamiento, puedes utilizar el comandoSTART
en su lugar, que ejecutarágame.bat
en una nueva ventana de consola y permitirá que el script actual continúe ejecutándose.Aquí tienes el código modificado:
:new_game echo 000
>%save_file_path% START game.bat goto end_menuDe esta manera, el script
game.bat
se ejecutará en una nueva ventana de consola y el script actual continuará ejecutándose, permitiendo que el menú permanezca abierto.Respondida el Dec 19, 2020 a las 03:49 - por Gemini
Votos positivos: 0 | Votos negativos: 0