SET /P sin valor declarado

Iniciado por Orni1, 21 Septiembre 2017, 12:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Orni1

He creado un bat para comprimir archivos con contraseña.

Con la variable
SET /P Pass= ^> Enter the value for the password in all rar files:

Pido la contraseña.

Con el código:

if exist %mpn% %temp%\adds\rar a -r -rr -v116M -p%Pass% compressed\%mpn% %mpn%.rar %mpn%

if not exist compressed\%mpn%.rar goto rarerror
rmdir /s /Q %mpn%
goto inicio

:rarerror
   echo No se ha podido crear el archivo comprimido.
   pause >nul
   @cls&exit


Esto funciona bien (siempre que se le de valor a %Pass%).

El problema me surge cuando no pongo ningún valor declarado en Set /P
Si lo dejas en blanco y pulsas enter y el código corre hasta que llega -p%Pass% ahí queda bloqueado.

Qué puedo hacer para que si la variable %Pass% no tiene valor el código en la orden de compresión la salte, o a ultimo remedio si no se pone valor a set /p no se pueda continuar adelante hasta darle valor a la variable %Pass%.

Gracias por anticipado

**Aincrad**

hola , soy Aincrad de nuevo.

pon este code :

Código (bash) [Seleccionar]

@ECHO OFF
color a
goto pass1
:passno
          (  cls
                 echo/
                 echo/
                 echo ===================================
                 echo =     ATENCION                    =
                 echo ===================================
                 echo = Por favor Escriba la contraseña.=
                 echo ===================================
                 echo/
                 echo/
                     pause
                       goto pass1
                                        )

:pass1
                  ( cls
                      echo/
      set /p "Pass=^> Enter the value for the password in all rar files:  "
                if not defined pass (goto:passno)
                                             goto continue
             )

:continue
cls
echo tu contraseña es %pass%
pause


Listo es lo que querias . es en caso de que no escribas nada.

PD: porfavor colocar codigos dentro de las etiquetas correspondiente.

                              Comenta si te funciono






Orni1

Disculpadme por el error de no poner la etiqueta en el código, lo he modificado espero haberlo hecho bien.

**Aincrad** gracias de nuevo por tu saber y tu tiempo, a ver si pillo un rato hoy y lo pruebo, aunque seguro que rula.

Entiendo a simple vista que la opción es poner valor a "pass" si o si, pero lo pruebo y comento


Orni1

Funciona perfecto compañero, como he comentado antes, ya he comprobado que o pones valor a la variable o no hay tu tía...

Ya lo he implementado al que tenía así ha quedado

goto pass1
:passno
color a
          (  cls
echo.
echo         ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo         º                                    º
echo         º        ..:: Attention ::..         º
echo         º        will not be echoed          º
echo         º                                    º
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
                 echo/
echo      ============================================
echo      =          ..:: ATTENTION ::..             =
echo      ============================================
echo      = Please, Enter the value for the password.=
echo      ============================================
                 echo/
                 echo/
                     pause
                       goto pass1
                                        )

:pass1

                 ( cls
echo.
echo         ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo         º                                    º
echo         º        ..:: Attention ::..         º
echo         º        will not be echoed          º
echo         º                                    º
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
                      echo/
      set /p "Pass=^> Enter the value for the password in all rar files:  "
                if not defined pass (goto:passno)
                                             goto continue
             )

:continue
cls
echo.
echo.
echo           tu contraseña es %pass%
pause



he pasado el código de color a passno de tal modo que si no pones el pass saldrá todo el código en verde y si pones el pass el color sale por defecto.

Compi muchas gracias de nuevo por otra clase a esta pazguata que le queda mucho por aprender.

He aprovechado tu código anterior (el del =) para retomar un tema anterior que tenia aparcado precisamente por el mismo signo.

Todavía me viene grande este idioma pero con vosotros ya he aprendido a automatizar algunas tareas. Gracias de nuevo.

**Aincrad**

#4
me alegro que te haya servido .  ;-)
        ;D  espero que no sea mucha molestia pero, podrías participar en la encuesta?

link:

http://foro.elhacker.net/programacion_general/encuesta_cual_lenguaje_es_el_mas_usado_en_el_foro_del_2192017_al_28092017-t474790.0.html