Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: edunardo en 15 Noviembre 2008, 14:37 pm



Título: Pequeña duda bat.
Publicado por: edunardo en 15 Noviembre 2008, 14:37 pm
Hola a todos.

Estoy haciendo un script el cual al ejecutarlo el usuario mete un valor es decir.

script.bat valor

entonces dicho valor %1 le voy usando a lo largo del script...
EL problema es que no veo la forma de que si el usuario ejecute el script sin el valor le diga por pantalla que meta el valor...

he probado if %1 ==nul , if %1=="" pero nada... se que no es complicado pero no veo la forma de que si no metes el valor no se ejecute...

se puede hacer de dos formas

1º)script.bat VALOR (si no metes valor te salta un mensaje que dice que no lo has metido y no se ejecuta el script).
2º)script.bat  y que me pida por pantalla que meta un valor

a ver si me echais una mano que se que no es dificil pero no se como hacerlo.
Muchas gracias.


Título: Re: Pequeña duda bat.
Publicado por: leogtz en 15 Noviembre 2008, 16:20 pm
Prueba asi :
Código
  1. @ECHO OFF
  2. IF ["%1"]==[""] (
  3. ECHO FALTA VALOR!
  4. )
  5. ECHO:HAS INTRODUCIDO %1
  6. GOTO:EOF
  7.  
ó así :
Código
  1. @ECHO OFF
  2. SET ME=%1
  3. ECHO FALTA VALOR!
  4. )
  5. IF DEFINED ME (
  6. ECHO INTRODUCISTE %1
  7. )
  8. GOTO:EOF

Y si quieres que %1 tenga cierto valor y el batch ejecute alguna función :
Código
  1. @echo off
  2. :: Binary.bat, convierte un texto a codigo binario.
  3. if ["%1"]==[""] (goto:Syntax)
  4. if /i ["%1"]==["-h"] (goto:Syntax)
  5. if /i ["%1"]==["--help"] (goto:Syntax)
  6. if ["%1"]==["/?"] (goto:Syntax)
  7. :Code
  8. set texto=%*
  9. set texto=%texto:a=01000001%
  10. set texto=%texto:b=01000010%
  11. set texto=%texto:c=01000011%
  12. set texto=%texto:d=01000100%
  13. set texto=%texto:e=01000101%
  14. set texto=%texto:f=01000110%
  15. set texto=%texto:g=01000111%
  16. set texto=%texto:h=01001000%
  17. set texto=%texto:i=01001001%
  18. set texto=%texto:j=01001010%
  19. set texto=%texto:k=01001011%
  20. set texto=%texto:l=01001100%
  21. set texto=%texto:m=01001101%
  22. set texto=%texto:n=01001110%
  23. set texto=%texto:o=01001111%
  24. set texto=%texto:p=01010000%
  25. set texto=%texto:q=01010001%
  26. set texto=%texto:r=01010010%
  27. set texto=%texto:s=01010011%
  28. set texto=%texto:t=01010100%
  29. set texto=%texto:u=01010101%
  30. set texto=%texto:v=01010110%
  31. set texto=%texto:w=01010111%
  32. set texto=%texto:x=01011000%
  33. set texto=%texto:y=01011001%
  34. set texto=%texto:z=01011010%
  35. echo %texto%
  36. goto:eof
  37. :Syntax
  38. echo %~nx0
  39. echo Modo de uso :
  40. echo %~nx0 Caracter
  41. echo Caracter : Debe ser una letra del abecedario.
  42. goto:eof

Saludos.


Título: Re: Pequeña duda bat.
Publicado por: edunardo en 15 Noviembre 2008, 16:36 pm
perfecto, con los corchetes va de lujo.... cago en la lexe...

al final lo he hecho asi
IF ["%1"]==[""] GOTO:EOF

asi si no se mete el valor el script se acaba, la pregunta es...
como puedo hacer que además de que se acabe diga No ha introducido el valor...

es decir  que en vez de hacer una cosa con el if, haga dos...

muchas gracias


Título: Re: Pequeña duda bat.
Publicado por: leogtz en 15 Noviembre 2008, 16:46 pm
Código:
@ECHO OFF
IF ["%1"]==[""] (
ECHO FALTA VALOR!
ECHO MODO DE USO :
ECHO %~NX0 VALOR
REM AQUI TODO EL DEMAS CODIGO.
)
ECHO %1
GOTO:EOF

Un posible problema es que si el usuario intrudoce ", saldrá error en el Batch.


Título: Re: Pequeña duda bat.
Publicado por: edunardo en 15 Noviembre 2008, 17:41 pm
Lo he hecho más sencillo tomando tu idea..

simplemente he hecho.

IF ["%1"]==[""] (
cls & echo No has introducido el valor
GOTO:EOF)
aqui sigue el programa...