Unix - Consulta codigo en batch windows.

   
Vista:
Imágen de perfil de Gabriel

Consulta codigo en batch windows.

Publicado por Gabriel gpinformatica01@gmail.com (2 intervenciones) el 02/10/2017 07:12:19
Buenas queria hacerles una consulta, estoy teniendo problemas con mi codigo en batch en windows.
Es un programita que debo hacer para el estudio.
El problema radica que no encuentro la forma de comparar el valor de una variable ingresada por el usuario.
ejemplos:

1
2
3
@echo off
echo.Ingrese su nombre:
set /p nombre=

Lo que necesito aquí es que el usuario al ingresar números o todo lo que sea diferente a letras lo mande a un
error con el goto.
Lo que quiero hacer es comparar las letras de los números.
Trate con if trate con for y solo eh logrado que al ingresar un numero del 0 al 9 lo dirija mediante el goto a donde yo quiero, pero si el usuario me ingresa numeros seguidos ejem: 123 no se cumplen las condiciones.

Mi segundo problema es como hago para que la consola de cmd al ejecutarse el batch no se cierre presionando enter.

1
2
3
echo.Ingrese su nombre:
set /p nombre=
if [%nombre%]==[] goto alta
Tengo algo asi para cuando solicita ingresar valor a la variable solamente se apreta enter pero el tema es que cuando paso de un menu al otro en mi batch no se ejecuta dicho codigo.

Esto viene a ser parte de mi codigo donde le doy el alta a los alumnos registrados generando asi un txt con los datos """Recuerden es parte del codigo"".

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
:alta
cls
echo.Ingrese su nombre:
set /p nombre=
if [%nombre%]==[] goto alta
rem // si se preciona solamente enter vuelve a (nombre) //
:apellido
cls
echo.Ingrese su apellido:
set /p apellido=
if [%apellido%]==[] goto apellido
:edad
cls
echo.Ingrese su edad:
set /p edad=
if [%edad%]==[] goto edad
:cedula
cls
echo.Ingrese su cedula:
set /p cedula=
if [%cedula%]==[] goto cedula
if exist alumnos\"%cedula%.txt" goto ci-error
rem // corroboro en la base de datos que no exista la cedula a ingresar //
:curso
cls
echo.Ingrese nombre del curso:
set /p cur=
if [%cur%]==[] goto curso
:año_ins
cls
echo.Ingrese el año de inscripcion:
set /p año_ins=
if [%año_ins%]==[] goto año_ins
echo.Nombre: %nombre% Apellido: %apellido% Edad: %edad% Cedula: %cedula% Curso: %curso% Año: %año_ins% > alumnos\%cedula%.txt
rem // guardo los datos de las variables en la variable del txt de salida //
echo.El usuario fue ingresado con exito.
pause
goto ci-1
:ci-1
cls
echo. 1) Volver al menu principal
echo. 2) Volver al inicio del sub menu " Seccion Alumnos "
set /p ci=
if [%ci%]==[] goto ci-1
if %ci% equ 1 goto inicio
if %ci% equ 2 goto alumnos
for %%x in (%%x neq 1,%%x neq 2) do (goto ci-1)
pause>nul
:ci-error
echo.Su cedula se encuentra registrada !!!
pause
goto ci-1
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

Consulta codigo en batch windows.

Publicado por Antoni Masana (18 intervenciones) el 05/10/2017 13:10:33
He realizado algunos cambios que mejora el proceso.

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
@echo off
 
:alta
    cls
    echo.
    set /p nombre=Ingrese su nombre:
    if [%nombre%]==[] goto alta
    rem // si se preciona solamente enter vuelve a (nombre) //
 
:apellido
    cls
    echo.
    echo.Ingrese su nombre: %nombre%
    echo.
    set /p apellido=Ingrese su apellido:
    if [%apellido%]==[] goto apellido
 
:edad
    cls
    echo.
    echo.Ingrese su nombre: %nombre%
    echo.
    echo.Ingrese su apellido: %apellido%
    echo.
    set /p edad=Ingrese su edad:
    if [%edad%]==[] goto edad
 
:cedula
    cls
    echo.
    echo.Ingrese su nombre: %nombre%
    echo.
    echo.Ingrese su apellido: %apellido%
    echo.
    echo.Ingrese su edad: %edad%
    echo.
    set /p cedula=Ingrese su cedula:
    if [%cedula%]==[] goto cedula
    if exist alumnos\"%cedula%.txt" goto ci-error
    rem // corroboro en la base de datos que no exista la cedula a ingresar //
 
:curso
    cls
    echo.
    echo.Ingrese su nombre: %nombre%
    echo.
    echo.Ingrese su apellido: %apellido%
    echo.
    echo.Ingrese su edad: %edad%
    echo.
    echo.Ingrese su cedula: %cedula%
    echo.
    set /p cur=Ingrese nombre del curso:
    if [%cur%]==[] goto curso
 
:año_ins
    cls
    echo.
    echo.Ingrese su nombre: %nombre%
    echo.
    echo.Ingrese su apellido: %apellido%
    echo.
    echo.Ingrese su edad: %edad%
    echo.
    echo.Ingrese su cedula: %cedula%
    echo.
    echo.Ingrese nombre del curso: %cur%
    echo.
    set /p año_ins=Ingrese el año de inscripcion:
 
    if [%año_ins%]==[] goto año_ins
    echo.Nombre: %nombre% Apellido: %apellido% Edad: %edad% Cedula: %cedula% Curso: %curso% Año: %año_ins% > alumnos\%cedula%.txt
    rem // guardo los datos de las variables en la variable del txt de salida //
    echo.
    echo. **** El usuario fue ingresado con exito. ****
    echo.
    pause
    goto ci-1
 
:ci-1
    cls
    echo.
    echo.Ingrese su nombre: %nombre%
    echo.
    echo.Ingrese su apellido: %apellido%
    echo.
    echo.Ingrese su edad: %edad%
    echo.
    echo.Ingrese su cedula: %cedula%
    echo.
    echo.Ingrese nombre del curso: %cur%
    echo.
    echo.Ingrese el año de inscripcion: %año_ins%
    echo.
    echo. **** El usuario fue ingresado con exito. ****
    echo.
    echo.
    echo.
    echo. 1) Volver al menu principal
    echo. 2) Volver al inicio del sub menu " Seccion Alumnos "
    echo.
    echo.
 
    CHOICE /C 12 /T 5 /D 1 /N /M "Seleccione una opcion: "
    set ci=%ErrorLevel%
 
    if [%ci%]==[] goto ci-1
    if %ci% equ 1 goto inicio
    if %ci% equ 2 goto alumnos
                  goto ci-1
:ci-error
    echo.
    echo.
    echo.Su cedula se encuentra registrada !!!
    echo.
    echo.
    pause
    goto ci-1
 
:inicio
    goto:EOF

Para verificar que solo sean numeros

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
cls
 
echo.
echo.Intruduzca solo numeros.
echo.
echo.
SET /P Texto=Numero:
echo.
echo.
 
SET /A Suma=0+%Texto%
 
IF     "%Texto%" == "%Suma%" echo. Solo hay digito numerico.
IF not "%Texto%" == "%Suma%" echo. Hay alguna letra

Para verificar que NO tenga numeros:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
cls
 
echo.
echo.Intruduzca un texto sin numeros.
echo.
echo.
SET /P Texto=Cual es su nombre:
echo.
echo.
 
set Bien=S
 
for %%a in ( 0 1 2 3 4 5 6 7 8 9 ) do call :Verifica %%a
IF "%Bien%" == "S" echo. Solo hay letras.
IF "%Bien%" == "N" echo. Hay algun digito numerico.
goto:EOF
 
:Verifica
   echo %Texto% | findstr %1 >nul 2>nul
   if %ErrorLevel% == 0 Set Bien=N

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Gabriel

Consulta codigo en batch windows.

Publicado por Gabriel (2 intervenciones) el 06/10/2017 05:25:25
Muchas gracias por la pronta respuesta Antoni funciona todo de maravilla!!!
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
Revisar política de publicidad