Ms-Dos - batch No se esperaba : en este momento.

 
Vista:

batch No se esperaba : en este momento.

Publicado por maria (1 intervención) el 30/01/2024 20:02:22
@echo off

:inicio
if "%1" == "" (
echo MENU
echo Opcion 1: Accion 1
echo.
echo Opcion 2: Accion 2
echo.
echo Opcion 3: Accion 3
echo.
echo Opcion 4: Salir

set /p opcion=Seleccionar opcion(1,2,3,4):
goto accion
) else (
%opcion%=%1
)


echo MENU
echo Opcion 1: Accion 1
echo.
echo Opcion 2: Accion 2
echo.
echo Opcion 3: Accion 3
echo.
echo Opcion 4: Salir


:accion
if "%opcion%" == "1" (
echo.
echo Realizando accion correspondiente a opcion 1
goto validacion
) else if "%opcion%" == "2" (
echo.
echo Realizando accion correspondiente a opcion 2
goto validacion
) else if "%opcion%" == "3" (
echo.
echo Realizando accion correspondiente a opcion 3
goto validacion
) else if "%opcion%" == "4" (
echo.
echo Has seleccionado salir
echo Fin de Script
pause > nul
) else (
echo Opcion incorrecta
)
:validacion
echo Desea realizar otra accion (S/N):
set /p sino=

if /i "%sino%"=="S" (
goto inicio
) else (
echo Fin de Script
pause > nul
)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

batch No se esperaba : en este momento.

Publicado por Antoni Masana (811 intervenciones) el 30/01/2024 21:04:51
He revisado el BAT pero me hubiese gustado que pusieras un comentario del problema que tienes.

Yo voy a ser un poco más explícito.

Tienes un problema con los paréntesis. La causa del problema es que el programo los comandos de los BAT era un chapucero.
Resulta que el paréntesis abierto del primer IF (fila 4) lo empareja con el primer paréntesis cerrado (fila 14) y sin tener en cuenta el segundo paréntesis abierto de la misma fila 14.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
@echo off
 
:inicio
    if "%1" == "" (
        echo MENU
        echo Opcion 1: Accion 1
        echo.
        echo Opcion 2: Accion 2
        echo.
        echo Opcion 3: Accion 3
        echo.
        echo Opcion 4: Salir
 
        set /p opcion=Seleccionar opcion(1,2,3,4)
        goto accion
    ) else (
        %opcion%=%1
    )
 
    echo MENU
    echo Opcion 1: Accion 1
    echo.
    echo Opcion 2: Accion 2
    echo.
    echo Opcion 3: Accion 3
    echo.
    echo Opcion 4: Salir
 
:accion
if "%opcion%" == "1" (
    echo.
    echo Realizando accion correspondiente a opcion 1
    goto validacion
) else if "%opcion%" == "2" (
    echo.
    echo Realizando accion correspondiente a opcion 2
    goto validacion
) else if "%opcion%" == "3" (
    echo.
    echo Realizando accion correspondiente a opcion 3
    goto validacion
) else if "%opcion%" == "4" (
    echo.
    echo Has seleccionado salir
    echo Fin de Script
    pause > nul
) else (
    echo Opcion incorrecta
)
 
:validacion
    echo Desea realizar otra accion (S/N):
    set /p sino=
 
if /i "%sino%"=="S" (
    goto inicio
) else (
    echo Fin de Script
    pause > nul
)



Además tiene muchos fallos que he corregido.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
@echo off
    if Not "%1" == "" (
        Call :Menu
        Set opcion=%1
        goto Accion
    )
 
:inicio
    Call :Menu
    set /p opcion=Seleccionar opcion(1,2,3,4):
    goto accion
 
:Menu
    echo        MENU
    echo.
    echo.
    echo Opcion 1: Accion 1
    echo.
    echo Opcion 2: Accion 2
    echo.
    echo Opcion 3: Accion 3
    echo.
    echo Opcion 4: Salir
    echo.
    goto :EOF
 
:accion
    if "%opcion%" == "1" (
        echo.
        echo Realizando accion correspondiente a opcion 1
        goto validacion
    ) else if "%opcion%" == "2" (
        echo.
        echo Realizando accion correspondiente a opcion 2
        goto validacion
    ) else if "%opcion%" == "3" (
        echo.
        echo Realizando accion correspondiente a opcion 3
        goto validacion
    ) else if "%opcion%" == "4" (
        echo.
        echo Has seleccionado salir
        echo Fin de Script
        pause > nul
    ) else (
        echo Opcion incorrecta
    )
 
:validacion
    echo.
    set /p sino=Desea realizar otra accion (S/N):
 
    if /i "%sino%"=="S" (
        goto inicio
    ) else (
        echo Fin de Script
        pause > nul
    )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar