Autor
|
Tema: [BAT] Duda con FOR (Leído 2,232 veces)
|
ovichan
Desconectado
Mensajes: 81
|
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. @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
Mensajes: 214
|
set /p min="Minutos antes de apagar: " :: 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
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 Saludos!
|
|
|
En línea
|
|
|
|
ovichan
Desconectado
Mensajes: 81
|
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
Mensajes: 214
|
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: comandoquenoexiste && Echo.Hola Mundo
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 Saludos!
|
|
|
En línea
|
|
|
|
ovichan
Desconectado
Mensajes: 81
|
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
Mensajes: 214
|
Más o menos pero al revés. En el otro post te lo expliqué mejor
|
|
|
En línea
|
|
|
|
|
|