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


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [AYUDA] CMD codigo minutos a segundos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] CMD codigo minutos a segundos  (Leído 122 veces)
Cronno

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[AYUDA] CMD codigo minutos a segundos
« en: Ayer a las 22:22 »

Muy buenas a tod@s.

En mi duda me enfocaré en el comando shutdown ya que desconozco si se puede hacer de otra forma.

Resulta que utilizamos bastante el codigo shutdown /s /t XXX para apagar el ordenador a los segundos determinados desde un archivo CMD.

El caso es que utilizamos, por comodidad, para que nos pregunte cuanto tiempo deseamos esperar para apagar el PC y lo hacemos así ha sabiendas que el tiempo va en segundos:
    set /p valor=Tiempo hasta apagar el dispositivo?  :
    shutdown /s /t %valor%


Hasta ahí todo bien, pero queremos agilizar el proceso e introducir el valor directamente en minutos y que lo introduzca como segundos en el comando, salvo exista otra opción. Es decir, poner por ejemplo 4,3 minutos y que el solo añada a la línea shutdown /s /t el valor en segundos y lo ejecute, o lo que sería lo mismo:
    shutdown /s /t 270       (270 que son los 4,3 minutos pasados a segundos)

Para hacer esto último sería multiplicar el valor dado (%valor%) multiplicado por 60 pero no se cómo realizar eso. Alguien me puede orientar?


« Última modificación: Ayer a las 22:30 por Cronno » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.542


Hackentifiko!


Ver Perfil
Re: [AYUDA] CMD codigo minutos a segundos
« Respuesta #1 en: Hoy a las 00:50 »

Deepseek me respondió esto:
Citar
### Solución para convertir minutos a segundos en el comando `shutdown`
Puedes modificar tu script para que acepte minutos (incluso con decimales, como `4.3`) y los convierta automáticamente a segundos. 

Aquí tienes una versión mejorada de tu script: 

```cmd
@echo off
set /p minutos="Tiempo hasta apagar el dispositivo (en minutos)? : "

:: Reemplazar coma por punto por si el usuario introduce 4,3 en lugar de 4.3
set minutos=%minutos:,=.%

:: Calcular segundos (minutos * 60) usando PowerShell para soportar decimales
for /f %%a in ('powershell -command "[math]::Floor(%minutos% * 60)"') do set segundos=%%a

echo Apagando el equipo en %segundos% segundos (%minutos% minutos)...
shutdown /s /t %segundos%
```

### Explicación:
1. **`set /p minutos=...`** → Pide al usuario que introduzca el tiempo en minutos. 
2. **`%minutos:,=.%`** → Convierte comas en puntos para evitar errores con decimales (ej: `4,3` → `4.3`). 
3. **`powershell -command "[math]::Floor(%minutos% * 60)"`** → Usa PowerShell para hacer la multiplicación (`minutos × 60`) y redondear hacia abajo. 
4. **`shutdown /s /t %segundos%`** → Ejecuta el comando de apagado con el tiempo en segundos. 

### Ejemplo de uso:
- Si el usuario introduce **`4.3`**, el script calculará: 
  `4.3 × 60 = 258 segundos` → `shutdown /s /t 258`. 

### Alternativa sin PowerShell (solo minutos enteros)
Si prefieres evitar PowerShell y solo necesitas minutos enteros (sin decimales), puedes hacerlo así: 
```cmd
@echo off
set /p minutos="Tiempo hasta apagar el dispositivo (en minutos, enteros)? : "
set /a segundos=%minutos% * 60
shutdown /s /t %segundos%
```

### Conclusión
La versión mejorada permite introducir minutos en lugar de segundos, haciéndolo más práctico. 

Si tienes más dudas sobre scripts en `CMD`, ¡avísame!

Si no te sirve, lo siento.

https://chat.deepseek.com/


En línea

Cronno

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [AYUDA] CMD codigo minutos a segundos
« Respuesta #2 en: Hoy a las 01:02 »

Gracias. No había caido en eso. Estoy ya viejo y me falta costumbre con la IA  ;D ;D ;D

Probé con el copilot y me lo hizo a la primera, ya después lo ha ido mejorando muchísimo más añadiendo también reinicio, hybernación, etc. y puse alguna cosa propia.

Nuevamente, gracias por responder  ;-)

Lo dejo por si a alguien le interesa:
Código:
:inicio
@echo off
TITLE %USERNAME%
MODE con:cols=120 lines=80
color 3

:inicio
cls
echo Bienvenido al administrador de apagado/reinicio.
@echo off
echo.
echo =================================================================
echo           by Flamman   ^|    %DATE%    ^|   %TIME%
echo =================================================================
setlocal enabledelayedexpansion
echo [ 1 ] Apagar el equipo en el tiempo estipulado
echo [ 2 ] Reiniciar el equipo en el tiempo estipulado
echo [ 3 ] Cancelar apagado/reinicio programado
echo [ 4 ] Salir
echo =================================================================
echo.
set /p opcion=Introduce la opcion deseada:

if "%opcion%"=="1" goto apagar
if "%opcion%"=="2" goto reiniciar
if "%opcion%"=="3" goto cancelar
if "%opcion%"=="4" goto salir

echo Opcion no valida. Intenta de nuevo.
goto inicio

:apagar
echo Introduce los minutos (pueden incluir decimales):
set /p minutos=
set /a verificacion=%minutos% 2>nul

if "%verificacion%"=="" (
    echo Entrada no valida. Por favor, introduce un numero.
    goto apagar
)

set /a segundos=60 * !minutos!
echo Apagando el equipo en !segundos! segundos...
shutdown /s /t !segundos!
echo Accion registrada: Apagar en !segundos! segundos >> log_apagar.txt
goto inicio

:cancelar
echo Cancelando apagado/reinicio programado...
shutdown /a
timeout /t 2
echo Acción registrada: Cancelar apagado/reinicio >> log_apagar.txt
echo Cancelando temporizadores creados...
goto inicio

:salir
cls
color 8
echo.
set "respuesta="
set /p respuesta="Seguro que quieres salir? (S/N) :"
if /i "%respuesta%"=="s" (
    cls
color 3
    echo.
    echo.
    echo.
    echo.           ==========================================
    echo.           ===========  HASTA LA PROXIMA  ===========
    echo.           ==========================================
    echo.
    echo.
    echo.
        timeout /t 2 /nobreak > nul
        Exit
)
if /i "%respuesta%"=="n" goto:inicio
(
cls
goto:op5
)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines