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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BAT] Duda con FOR
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BAT] Duda con FOR  (Leído 2,230 veces)
ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
[BAT] Duda con FOR
« en: 12 Julio 2012, 05:24 am »

Bueno estoy ajustando un script que tenía para que el apagado se realice a una hora, y queria que en la pantalla mostrase la hora en la que se iniciara el apagado. Como no se si se puede operar con horas, lo que he intentado es extraer los caracteres de la variable %time% para sumarle a cada un token su correspondiente valor. El caso es que con for, me incluye un espacio que intento quitar pero no puedo. He realizado el mismo proceso y con exito con los extractores de caracteres, pero queria probar con el FOR. Os pongo la trivialidad del codigo.

Código:
@echo off
set /p min="Minutos antes de apagar: "
set /a sec=60*%min%

:: Opcion con extractores de caracteres

rem set h=%time:~0,2%
rem set m=%time:~3,2%
rem set s=%time:~6,2%
rem set ms=%time:~9,2%

:: Opcion con un bucle

for /F "tokens=1,2,3,4 delims=:," %%H in ("%time%") do set h=%%H && set m=%%I && set s=%%J && set ms=%%K

rem set /a m=%m%+%min%

rem IF - if %m% GEQ 60 set /a h=%h%+(%m%/60) && set /a m=(%m%)%%60

echo %h%:%m%:%s%,%ms%

pause

la salida seria: 11 :12 :23 ,70. Y desearia saber como podria hacer que extraiga los valores sin los espacios para que se muestre asi: 11:12:23,70.

Imagino que es una boberia pero es una curiosidad mas. ^^


En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [BAT] Duda con FOR
« Respuesta #1 en: 12 Julio 2012, 07:27 am »

Código
  1.  
  2. @echo off
  3. set /p min="Minutos antes de apagar: "
  4. set /a sec=60*%min%
  5.  
  6. :: Opcion con extractores de caracteres
  7.  
  8. rem set h=%time:~0,2%
  9. rem set m=%time:~3,2%
  10. rem set s=%time:~6,2%
  11. rem set ms=%time:~9,2%
  12.  
  13. :: Opcion con un bucle
  14.  
  15. for /F "tokens=1,2,3,4 delims=:," %%H in ("%time%") do set "h=%%H" && set "m=%%I" && set "s=%%J" && set "ms=%%K"
  16.  
  17. rem set /a m=%m%+%min%
  18.  
  19. rem IF - if %m% GEQ 60 set /a h=%h%+(%m%/60) && set /a m=(%m%)%%60
  20.  
  21. echo %h%:%m%:%s%,%ms%
  22.  
  23.  

Pasa que al estar concatenados los sets por &&, la definición de la variable abarca hasta precisamente ese carácter. Encerrando entre comillas defines lo que forma parte de la variable, y por tanto omites cualquier espacio que haya después  :P

Saludos!


En línea

ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: [BAT] Duda con FOR
« Respuesta #2 en: 12 Julio 2012, 17:49 pm »

Gracias por tu respuesta, no pensaba yo que seria por eso... este lenguaje es muy meticuloso en ciertos aspectos, x eso me gusta tanto \O/.

Saludos
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [BAT] Duda con FOR
« Respuesta #3 en: 12 Julio 2012, 21:36 pm »

De nada  ;)
Una cosa más que noté, sin importancia, pero ya que quieres profundizar...
Estás usando && para concatenar esos comandos "set". Ten en cuenta que el símbolo && lo que hace es ejecutar el posterior comando siempre y cuando el errorlevel del ejecutado sea 0. Esto es:

Código
  1. @Echo Off
  2. comandoquenoexiste && Echo.Hola Mundo
  3.  

Puesto que "comandoquenoexiste" dará un errorlevel distinto de 0 (es decir, que dará error), el próximo comando, el "Echo", no se ejecutará.

En tu caso, sería mejor usar únicamente &, que lo que hace es ejecutar el siguiente comando siempre, sea cual sea el errorlevel del anterior.

Si lo sabías, mejor, pero si no, tenlo en cuenta  :P

Saludos!
En línea

ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: [BAT] Duda con FOR
« Respuesta #4 en: 13 Julio 2012, 19:37 pm »

Si, habia leido que utilizando solo un &, la lectura se interrumpe hasta que se deja de cumplir la condicion (o algo asi) y con && lee toda la linea. La verdad es que no habia caido en que ante errores es mejor usar la opcion que tu marcas. Saludos y gracias  ;-)
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [BAT] Duda con FOR
« Respuesta #5 en: 13 Julio 2012, 20:36 pm »

Más o menos pero al revés. En el otro post te lo expliqué mejor ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,814 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 5,840 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines