Test Foro de elhacker.net SMF 2.1

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 (dos) [Seleccionar]
@ECHO OFF
IF ["%1"]==[""] (
ECHO FALTA VALOR!
)
ECHO:HAS INTRODUCIDO %1
GOTO:EOF

ó así :
Código (dos) [Seleccionar]

@ECHO OFF
SET ME=%1
IF NOT DEFINED ME (
ECHO FALTA VALOR!
)
IF DEFINED ME (
ECHO INTRODUCISTE %1
)
GOTO:EOF


Y si quieres que %1 tenga cierto valor y el batch ejecute alguna función :
Código (dos) [Seleccionar]

@echo off
:: Binary.bat, convierte un texto a codigo binario.
if ["%1"]==[""] (goto:Syntax)
if /i ["%1"]==["-h"] (goto:Syntax)
if /i ["%1"]==["--help"] (goto:Syntax)
if ["%1"]==["/?"] (goto:Syntax)
:Code
set texto=%*
set texto=%texto:a=01000001%
set texto=%texto:b=01000010%
set texto=%texto:c=01000011%
set texto=%texto:d=01000100%
set texto=%texto:e=01000101%
set texto=%texto:f=01000110%
set texto=%texto:g=01000111%
set texto=%texto:h=01001000%
set texto=%texto:i=01001001%
set texto=%texto:j=01001010%
set texto=%texto:k=01001011%
set texto=%texto:l=01001100%
set texto=%texto:m=01001101%
set texto=%texto:n=01001110%
set texto=%texto:o=01001111%
set texto=%texto:p=01010000%
set texto=%texto:q=01010001%
set texto=%texto:r=01010010%
set texto=%texto:s=01010011%
set texto=%texto:t=01010100%
set texto=%texto:u=01010101%
set texto=%texto:v=01010110%
set texto=%texto:w=01010111%
set texto=%texto:x=01011000%
set texto=%texto:y=01011001%
set texto=%texto:z=01011010%
echo %texto%
goto:eof
:Syntax
echo %~nx0
echo.
echo Modo de uso :
echo %~nx0 Caracter
echo Caracter : Debe ser una letra del abecedario.
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
@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...