[BATCH] CMD, MS-DOS, y argumentos

Iniciado por Beito, 24 Octubre 2012, 03:59 AM

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

Beito

Hola Hace un tiempo envie un problema y uno me dijo que el cmd es diferente al msdos , osea cual usar , para hacer bombas logicas y esas cosas que hacen en batch , necesito un programa msdos?

y bueno tengo un problema en cmd supongo

Código (DOS) [Seleccionar]
@echo off
title ejemplo de porcentajes
if %1==/help goto "ayuda" else goto "normal"
:ayuda
echo Esta es la ayuda
echo este mensaje se mostrara si usaron el comando /help
pause > nul
exit

:normal
echo es aqui cuando el programa ejecuta normalmente osea sin help
pause > nul
exit


no llega a ejecutar la etiqueta normal
estoy practicando eso de los parametros o porcentajes
soy novato


$Edu$

Estas programando en Batch, que es un lenguaje de programacion por lotes, quiere decir que en realidad no es un lenguaje de programacion, sino que solo son un conjunto de comandos a realizar en Windows. De la misma forma que puedes hacer esos comandos manualmente, uno por uno en el CMD, la shell, el ms-dos, como quieras decirle, entrando en Inicio-Ejecutar: cmd.
Linux por otro lado tiene su propia shell, distinta a la de Windows, entonces ahi el lenguaje se llama Bash que tiene su parecido pero como los comandos son distintos, cambia todo.
Ya lo sabes pero ahora te lo aclare mas pienso.

Ahora te puedo decir que la proxima vez que pongas un codigo, lo hagas dentro de las etiquetas correspondiente a este codigo y existe una sección dentro de Programacion que es la programacion Scripting, ahi deberias crear los temas ya que Batch podria ser considerado como lenguaje scripting (no estructurado, linea a linea) y por eso lo ponen ahi en esa sección juntos con los otros lenguajes de programacion, pero como ya sabes Batch es un lenguaje de programacion por lotes por lo que dije hoy.

Sobre el codigo, te digo que hagas siempre de esta forma:

Código (dos) [Seleccionar]

@echo off
title ejemplo de porcentajes


if "%1"=="/help" (goto :ayuda) else (goto :normal)

:ayuda
echo Esta es la ayuda
echo este mensaje se mostrara si usaron el comando /help
pause > nul
exit

:normal
echo es aqui cuando el programa ejecuta normalmente osea sin help
pause > nul
exit



Porque si no le pasas parametro ninguno da error porque no esta definida la variable %1 que es el primero parametro que le mandas y como no enviamos nada como parametro no esta definida. Pero si le agregas las comillas obligas a que devuelva algo esa variable, y como no pasamos nada devolvera "" por lo menos y asi queda definida, aunque sea en nada, pero queda definida. Despues si pones cualquier parametro correra normal por el hecho de que si %1 sera igual a "" entonces correra el "else".

No te quedes con mi respuesta, seguramente alguien me corrige algo o te explica algo mas, saludos!

Eleкtro

#2
Cita de: Beito en 24 Octubre 2012, 03:59 AMif %1==/help goto "ayuda" else goto "normal"
no llega a ejecutar la etiqueta normal

De la forma en que has escrito la sintaxis, si no le pasas un argumento al script entonces el argumento 1 no existe, quedará un espacio vacío y sin comillas, y el IF no puede comparar un "espacio vacio" porque siempre dará error.

En resumen, esto es lo que la CMD entiende cuando no le pasas un argumento a tu script:
Código (dos) [Seleccionar]
if  ==/help goto "ayuda" else goto "normal"

Como comprenderás dará error:
CitarNo se esperaba goto en este momento.

Esto es una de las razones tán importantes de porque siempre digo que hay que usar comillas aunque parezca que no son necesarias como en el caso de los argumentos, que siempre llevan comillas dobles, pero si no existe el argumento desaparecen las comillas.

Entonces hay que hacerlo así:
Código (dos) [Seleccionar]
IF "%~1" == "...." () ELSE ()

Cita de: Beito en 24 Octubre 2012, 03:59 AMestoy practicando eso de los parametros o porcentajes
Deberías practicar primero la sintaxis, sobretodo el uso de las comillas y parentesis.

EDITO:
Cambiando de tema, La consola de Windows ha ido adoptando muchos nombres a lo largo de los años, la mayoría de la gente llama "dos" o "msdos", otros "linea de comandos", "consola", "símbolo de sistema", "bat", "batch".

Está bien llamarlo como a uno le de la gana mientras no se confundan los términos, MS-DOS es un sistema operativo por linea de comandos de la decada de los años 80, lo que tu estás aprendiendo proviene de ese SO, que se ha ido actualizando/transformando desde un completo sistema operativo de los 80, a un pequeño complemento más de Windows de hoy en día, la CMD.

http://es.wikipedia.org/wiki/DOS

Cita de: Beito en 24 Octubre 2012, 03:59 AMuno me dijo que el cmd es diferente al msdos , osea cual usar , para hacer bombas logicas y esas cosas que hacen en batch , necesito un programa msdos
Con una versión real de MS-dos solo podrías hacer un "DIR" y poco más, creo que queda claro con la explicación de antes.

Saludos