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:
title ejemplo de porcentajes
:ayuda
echo este mensaje se mostrara si usaron el comando /help
:normal
echo es aqui cuando el programa ejecuta normalmente osea sin help
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!