Pequeña duda bat.

Iniciado por edunardo, 15 Noviembre 2008, 14:37 PM

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

edunardo

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.

leogtz

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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

edunardo

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

leogtz

@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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

edunardo

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...