Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: elpeluca en 16 Septiembre 2012, 03:52 am



Título: "no se esperaba en este momento"(BATCH)
Publicado por: elpeluca en 16 Septiembre 2012, 03:52 am
Muy buenas, tengo un problema con el comando IF dentro de un FOR.
La cosa es que tengo un batch con este código:
Código
  1. @echo off
  2. color 0a
  3. echo Generar lista de multiplos de 3 y 5 hasta el numero (que no sea mayor de 1000):
  4. set /p cantidad=
  5. for /l %%c in (0,1,%cantidad%) do set /a mul3=3*%%c && set /a mul5=5*%%c && if %mul3%==%mul5% (echo %mul3%) else (echo %mul3% && echo %mul5%)
  6.  
El problema viene cuando lo ejecuto, que después de ingresar el valor de la variable %cantidad% me aparece un mensaje de error y se me cierra rápidamente el programa. He conseguido leer lo que pone: "No se esperaba ) en este momento".
Desde entonces he probado cambiar los paréntesis por corchetes, incluir esa parte del código en dos IF, incluso quitar los paréntesis, y lo peor es que si quito los paréntesis, muestra el mensaje: "No se esperaba ELSE en este momento", y si lo cambio por dos IF sin paréntesis me sale: "No se esperaba && en este momento".
Ya busqué por google pero no encontré nada que me sirviera, así que si me podríais ayudar por favor os estaré muy agradecido.

Y disculpen meter otra pregunta, pero ya que estoy quisiera preguntar por otro error. Se trata de que en un batch (que ya lo borré) en un comando FOR, cuando ponía un ECHO en cualquier momento después del primer &&, en lugar de mostrar el mensaje que debía mostraba: "ECHO esta desactivado".
Bueno espero que podáis ayudarme con estos problemas, y muchas gracias de antemano :)


Título: Re: "no se esperaba en este momento"(BATCH)
Publicado por: Eleкtro en 16 Septiembre 2012, 05:44 am
Usa correctamente la sintaxis de Batch.

Citar
for /l %%c in (0,1,%cantidad%) do (set /a mul3=3*%%c && set /a mul5=5*%%c && if %mul3%==%mul5% (echo %mul3%) else (echo %mul3% && echo %mul5%) )

Aparte:
- La comprobación no tiene sentido hacerla
- Necesitas expandir las variables para mostrarlas dentro de un for... o usar Call para mostrarlas.
- Al arreglar la sintaxis y los otros fallos tu code muestra los números de una forma muy desorganizada y poco agradable...

EDITO: Si tienes más dudas sobre Batch debes formular tus posts en la sección correcta... Foro de elhacker.net » Programación » Scripting

A ver que te parece así:

Código
  1. @echo off
  2. Rem elhacker.net
  3. Setlocal enabledelayedexpansion
  4.  
  5. :Menu
  6. Echo Generar lista de multiplos de 3 y 5 hasta el numero (que no sea mayor de 1000):
  7. Echo (Cantidad maxima: 335) | MORE
  8. set /P "X=Cantidad >> "
  9. If "%X%" GEQ "335" (SET "Cantidad=" & Goto :Menu)
  10.  
  11. :Generador
  12. for /L %%X in (1,1,%X%) do (
  13. SET /A "x3=3*%%X", "x5=5*%%X" && (
  14. Echo " !x3! " | Findstr "\<1[0-9][0-9][0-9]\>" >NUL || (Set "Multi3=!Multi3!!x3!, ")
  15. Echo " !x5! " | Findstr "\<1[0-9][0-9][0-9]\>" >NUL || (Set "Multi5=!Multi5!!x5!, ")
  16. )
  17. )
  18.  
  19. :Resultados
  20. Echo Multiplos (3): & Echo:%Multi3% | MORE
  21. Echo Multiplos (5): & Echo:%Multi5% | MORE

(http://img826.imageshack.us/img826/1949/captura2re.png)

Saludos.


Título: Re: "no se esperaba en este momento"(BATCH)
Publicado por: elpeluca en 17 Septiembre 2012, 18:02 pm
Si tienes más dudas sobre Batch debes formular tus posts en la sección correcta... Foro de elhacker.net » Programación » Scripting
Ok lo siento pensaba que estaba bien ponerlo aqui.

En cuanto a las correcciones, la primera no me funcionó pero sí la segunda (aunque hay unas cosas que aparecen en ese script que no las entiendo).
Y en fin me ayudaste bastante ;D.
Gracias y saludos!!