Título: Se puede hacer un IF dentro de un ELSE?? (BATCH) Publicado por: juntacadaveres en 22 Abril 2019, 18:03 pm He estado haciendo un script para creación de usuarios desde el contenido de un archivo de texto plano y estoy sospechando de que no me sale por poner un IF después de un ELSE. Así que hice un script más simple aparte para comprobar si esto era cierto
aquí el script: Código El script funciona correctamente hasta llegar al apartado del IF "%opt%" Título: Re: Se puede hacer un IF dentro de un ELSE?? (BATCH) Publicado por: juntacadaveres en 22 Abril 2019, 18:57 pm Mejoré el script
Código Y no me funciona en ambos casos me manda hacia A aunque ponga B Título: Re: Se puede hacer un IF dentro de un ELSE?? (BATCH) Publicado por: EdePC en 22 Abril 2019, 19:30 pm Saludos,
- Las variables en Bacth tienen un comportamiento inusual cuando se ejecutan en sentencias de una sola línea como sentencia & sentencia, o sentencia | sentencia, etc, las sentencias que van entre paréntesis se consideran que van en línea. - Ese comportamiento inusual hace que las variables no actualicen sus valores, se le asigna un valor la primera vez y luego no se notarán siguientes cambios hasta que termine la sentencia en línea. - Para solucionar esto se utiliza SETLOCAL EnableDelayedExpansion, esto hace que las variables si se actualicen tal como se espera, pero las variables deben cambiar su notación %variable% por !variable!. - Recuerda que para SET /A no es necesario utilizar %variable% o !variable!, esto se sobreentiende. Código - Otra forma es usando CALL. Ver el comportamiento de todo esto en: https://ss64.com/nt/delayedexpansion.html Título: Re: Se puede hacer un IF dentro de un ELSE?? (BATCH) Publicado por: juntacadaveres en 22 Abril 2019, 20:39 pm Saludos, - Las variables en Bacth tienen un comportamiento inusual cuando se ejecutan en sentencias de una sola línea como sentencia & sentencia, o sentencia | sentencia, etc, las sentencias que van entre paréntesis se consideran que van en línea. - Ese comportamiento inusual hace que las variables no actualicen sus valores, se le asigna un valor la primera vez y luego no se notarán siguientes cambios hasta que termine la sentencia en línea. - Para solucionar esto se utiliza SETLOCAL EnableDelayedExpansion, esto hace que las variables si se actualicen tal como se espera, pero las variables deben cambiar su notación %variable% por !variable!. - Recuerda que para SET /A no es necesario utilizar %variable% o !variable!, esto se sobreentiende. Código - Otra forma es usando CALL. Ver el comportamiento de todo esto en: https://ss64.com/nt/delayedexpansion.html Muchas gracias por tu ayuda. |