"no se esperaba en este momento"(BATCH)

Iniciado por elpeluca, 16 Septiembre 2012, 03:52 AM

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

elpeluca

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 (dos) [Seleccionar]

@echo off
color 0a
echo Generar lista de multiplos de 3 y 5 hasta el numero (que no sea mayor de 1000):
set /p cantidad=
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%)
pause
exit

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 :)

Eleкtro

#1
Usa correctamente la sintaxis de Batch.

Citarfor /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 (dos) [Seleccionar]
@echo off
Rem elhacker.net
Setlocal enabledelayedexpansion

:Menu
Echo Generar lista de multiplos de 3 y 5 hasta el numero (que no sea mayor de 1000):
Echo (Cantidad maxima: 335) | MORE
set /P "X=Cantidad >> "
If "%X%" GEQ "335" (SET "Cantidad=" & Goto :Menu)

:Generador
for /L %%X in (1,1,%X%) do (
SET /A "x3=3*%%X", "x5=5*%%X" && (
Echo " !x3! " | Findstr "\<1[0-9][0-9][0-9]\>" >NUL || (Set "Multi3=!Multi3!!x3!, ")
Echo " !x5! " | Findstr "\<1[0-9][0-9][0-9]\>" >NUL || (Set "Multi5=!Multi5!!x5!, ")
)
)

:Resultados
Echo+
Echo Multiplos (3): & Echo:%Multi3% | MORE
Echo Multiplos (5): & Echo:%Multi5% | MORE
Pause
Exit




Saludos.








elpeluca

Cita de: EleKtro H@cker en 16 Septiembre 2012, 05:44 AM
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!!