elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] Problema con el Quick Batch File Compiler
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] Problema con el Quick Batch File Compiler  (Leído 5,325 veces)
najmuddin

Desconectado Desconectado

Mensajes: 56


DARAK


Ver Perfil
[Batch] Problema con el Quick Batch File Compiler
« en: 29 Junio 2008, 00:09 am »

Saludos.

Descargué el Quick Batch File Compiler V 3.1.6.0, le apliqué el parche y me di a la tarea de pasar a .exe uno de los Bats que había hecho...

El .bat funciona perfecto, pero el .exe no... a continuación les dejo el Código Fuente...

Código:
@echo off
Mode con Cols=54
set tos=0
echo.
title Apagar el equipo - Temporizador
echo  ****************************************************
echo                  APAGAR EL SISTEMA
echo  ****************************************************
echo.
echo.
set /p priminutos= - Minutos:

for /l %%a in (1,1,1440) do (
If %priminutos%==%%a goto :paso
)

:postpaso
If %tos%==1 goto :correcto

:errora
echo.
echo.
echo  Hubo un error en la ejecucion del comando...
echo.
echo  Tal vez escribio un valor distinto a 1440 (24 horas)
pause>nul
exit

:correcto
set /a minutos=%priminutos%*60
echo.
set /p mensaje= - Mensaje:
set dos= -c
shutdown -s -t %minutos% -c %mensaje%
exit

:paso
set tos=1
goto :postpaso

nota: Bueno, da muchas vueltas innecesarias, pero fueron hechas con la intención de ver si funcionaban para otros casos...

Cuando lo ejecuto como Bat funciona perfecto, pero cuando lo ejecuto como exe, al insertar el primer valor (el número) aparece lo siguiente...

Número no válido . Las constantes numéricas son decimales(17),
hexadecimales(0x11) u octales (021)


pero continúa con la ejecución del programa (aunque ya no funciona)...

¿Qué es lo que pasa si en el BAT original corre perfecto?

Muchas Gracias



En línea

-DARAKknight-

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: [Batch] Problema con el Quick Batch File Compiler
« Respuesta #1 en: 29 Junio 2008, 00:27 am »

Ese error que mencionas sucede cuando con set /a asignas un valor que comienza con 0 (que indica que es octal) seguido de un número 8 o 9 (el sistema octal abarca los números de 0 a 7)

es decir si haces esto:

set /a numero=08
te arrojará ese error que mencionas.

por cierto interesante ese comando:
mode con


« Última modificación: 29 Junio 2008, 00:34 am por carlitos.dll » En línea

najmuddin

Desconectado Desconectado

Mensajes: 56


DARAK


Ver Perfil
Re: [Batch] Problema con el Quick Batch File Compiler
« Respuesta #2 en: 29 Junio 2008, 05:33 am »

Gracias, Carlitosdll, pero entonces cómo hago para evitar ese error, ¿no hay una manera de declararlo como decimal?...

Y lo de Mode Con funciona con lines y con cols...

Mode con cols=x
Mode con lines=x


En línea

-DARAKknight-

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: [Batch] Problema con el Quick Batch File Compiler
« Respuesta #3 en: 29 Junio 2008, 06:52 am »

definitivamente es problema del compilador, lo probé con la versión que usaste y sucede lo que mencionas. Lo compilé con la versión 2.1.7 y ningún problema.

me tomé la libertad de modificar un poco tu código, para darte otra idea de cómo escribirlo, (como opinabas que daba muchas vueltas :D).

Código:
@echo off
rem Mode con Cols=54
:: rem y dos dos puntos es comentado

:start
cls
echo.
title Apagar el equipo - Temporizador
echo  ****************************************************
echo                  APAGAR EL SISTEMA
echo  ****************************************************
echo.
echo.

:ingreso
set priminutos=
set /p priminutos=" - Minutos: "
if "%priminutos%":=="" (goto start)
if %priminutos:~0,1%==0 (goto start)
:: si primera letra es 0 ir a start

set /a priminutos=%priminutos%
::si ocurrio un error queda en 0

setlocal enableextensions
:: comandos de extension habilitados, para el if.

if %priminutos% LEQ 0 (goto errora)
::si priminutos es menor o igual a 0 ir a errora

if %priminutos% GTR 1440 (goto errora)
::si priminutos es mayor a 1440 ir a errora

goto correcto

:errora
cls
::limpiamos rapidamente el error
echo.
echo.
echo  Hubo un error en la ejecucion del comando...
echo.
echo  Tal vez escribio un valor distinto a 1440 (24 horas)
pause>nul
exit

:correcto
set /a minutos=%priminutos%*60
echo.
set /p mensaje=" - Mensaje: "
set mensaje=%mensaje:"=%
::borramos las comillas de mensaje por si colocan encerrado entre comillas.
shutdown -s -t %minutos% -c "%mensaje%"
exit
« Última modificación: 29 Junio 2008, 06:59 am por carlitos.dll » En línea

najmuddin

Desconectado Desconectado

Mensajes: 56


DARAK


Ver Perfil
Re: [Batch] Problema con el Quick Batch File Compiler
« Respuesta #4 en: 29 Junio 2008, 07:28 am »

Muchas Gracias, Carlitosdll, lo de las vueltas era sólo porque quise ver qué era exactamente lo que ocurría (por ejemplo nunca había utilizado el for de esa manera), pero ya que lo modificaste, mucho mejor, aunque me dejaste con varias dudas...

 ;D

1- ¿Por qué con Cols=54 como comentario?
2- if %priminutos:~0,1%==0 (goto start) --> No lo comprendí muy bien, jeje.
3- set /a priminutos=%priminutos% --> Tampoco lo comprendí bien... ¿Por qué queda en 0 si ocurre un error?
4- setlocal enableextensions No conocía setlocal e ignoro qué son las extensiones...

No sabes lo ignorante que me sentí viendo todo esto...  >:(    :rolleyes:
En línea

-DARAKknight-

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: [Batch] Problema con el Quick Batch File Compiler
« Respuesta #5 en: 29 Junio 2008, 07:56 am »

1-lo de cols comentado es solo por gustos, perdona :D.

2-selecciono desde la letra indice 0 hasta n - 1, es decir al colocar (0,1) selecciono desde el indice 0 hasta el indice 1 - 1 es decir de 0 a 0, esto es la primera letra solamente. Entonces, si la variable comienza con 0, (para evitar que sea octal, vamos al comienzo (start)

3-Yo me equivoqué. si en el set /a asignas una letra queda en 0. Pero si ocurre un error, la asignación no ocurre, ahora si la variable existía queda como estaba.

4-si colocas  la ayuda de if (if/?) te dirá que: si los comandos de extensión están habilitados, if cambia así: (... GTR, LEQ) y con setlocal enableextensions habilitas esto.

Puedes leer el post de programación avanzada en batch, y te aseguro que todo te quedará más claro.

BONUS: te regalo un programa que te muestra los contenidos que van tomando las  variables en tiempo de ejecución de los bat, se llama PowerCmd.

Código:
http://wikisend.com/download/219636/PowerCmd.rar










« Última modificación: 29 Junio 2008, 08:05 am por carlitos.dll » En línea

najmuddin

Desconectado Desconectado

Mensajes: 56


DARAK


Ver Perfil
Re: [Batch] Problema con el Quick Batch File Compiler
« Respuesta #6 en: 29 Junio 2008, 08:39 am »

Muchas Gracias de Nuevo... Creo que no Hay vez que entre a este Foro y salga sin haber aprendido al menos una sola cosa nueva...

   ;D
En línea

-DARAKknight-

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Mata-Pestañas (Batch o similares)
Scripting
klaine 2 3,946 Último mensaje 1 Abril 2011, 22:09 pm
por klaine
[BATCH-VBS]Pasar datos desde Batch A VBS. « 1 2 »
Scripting
FranciskoAsdf 12 9,951 Último mensaje 22 Abril 2011, 23:19 pm
por xassiz~
[Batch] Insertar un batch dentro de un batch que fabrique un .txt
Scripting
$pedrojo2704 2 6,231 Último mensaje 23 Agosto 2012, 10:08 am
por $pedrojo2704
Problema con apertura en batch
Scripting
xpaRtanus 2 3,471 Último mensaje 11 Abril 2013, 17:05 pm
por xpaRtanus
[PROBLEMA] Quick Batch File Compiler
Scripting
KZN 3 3,151 Último mensaje 11 Abril 2014, 22:41 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines