# Manual de Rescate Comandos

Rescate Comandos es una aplicación residente para Windows que monitoriza carpetas y ejecuta comandos cuando aparece un archivo concreto.

La idea principal es usar carpetas sincronizadas con servicios como Synology Drive, OneDrive, Dropbox, Google Drive o similares.

Ejemplo:

- Creas desde fuera de casa un archivo llamado `nvda.txt`.
- La nube lo sincroniza en el ordenador de casa.
- Rescate Comandos detecta ese archivo.
- Ejecuta el comando configurado.
- Borra el archivo disparador si así se configuró.

## Autor

Héctor J. Benítez Corredera

Versión 1.0

Copyright 2026

## Archivos principales

La carpeta recomendada para usar la aplicación es:

```text
C:\RescateComandos
```

Dentro puedes tener:

```text
C:\RescateComandos\RescateComandos.exe
C:\RescateComandos\manual.md
C:\RescateComandos\config.json
```

Si ejecutas la aplicación desde código fuente:

```text
C:\RescateComandos\RescateComandos.py
C:\RescateComandos\manual.md
C:\RescateComandos\config.json
```

El archivo `config.json` se crea automáticamente cuando guardas reglas u opciones.

## Configuración

La configuración se guarda siempre junto al script o junto al ejecutable.

Archivo:

```text
config.json
```

Importante:

Si colocas la aplicación en una carpeta protegida como `C:\Program Files`, Windows puede impedir que se escriba `config.json` salvo que la aplicación se ejecute como administrador.

Por eso se recomienda usar una carpeta propia como:

```text
C:\RescateComandos
```

## Estructura del archivo config.json

El archivo de configuración contiene dos bloques principales:

- `reglas`: lista de reglas configuradas.
- `opciones`: opciones generales de la aplicación.

Ejemplo:

```json
{
	"reglas": [],
	"opciones": {
		"iniciar_minimizado": false
	}
}
```

La opción `iniciar_minimizado` controla si la aplicación se inicia oculta en la bandeja del sistema.

## Uso básico

1. Abre Rescate Comandos.
2. Pulsa `Agregar regla`.
3. Indica un título o nombre para la regla.
4. Selecciona la carpeta que se monitorizará.
5. Indica el archivo disparador.
6. Indica el comando que se ejecutará.
7. Indica el intervalo de comprobación.
8. Guarda la regla.

## Cómo funciona una regla

Una regla no se ejecuta simplemente porque pase el intervalo indicado.

Una regla se ejecuta cuando se cumplen estas condiciones:

- La regla está activada.
- La carpeta existe.
- El archivo disparador existe dentro de esa carpeta.
- El intervalo de comprobación ya ha pasado.
- El comando no está vacío.

Ejemplo:

Si tienes esta configuración:

```text
Carpeta: C:\Users\xebol\SynologyDrive\Privada\Comandos
Archivo: nvda.txt
Intervalo: 60
```

La aplicación comprobará cada 60 segundos si existe:

```text
C:\Users\xebol\SynologyDrive\Privada\Comandos\nvda.txt
```

Si el archivo existe, ejecutará el comando.

Si no existe, no hará nada.

## Revisar ahora

La ventana principal tiene un botón llamado `Revisar ahora`.

Este botón fuerza una comprobación manual de las reglas activas.

Es útil para diagnosticar problemas.

Al pulsarlo, el registro mostrará si el archivo disparador existe o no existe.

Ejemplo de archivo encontrado:

```text
Archivo encontrado manualmente: C:\Users\xebol\SynologyDrive\Privada\Comandos\nvda.txt
```

Ejemplo de archivo no encontrado:

```text
Archivo no encontrado manualmente: C:\Users\xebol\SynologyDrive\Privada\Comandos\nvda.txt
```

## Bandeja del sistema

Al cerrar la ventana, la aplicación no se cierra del todo.

Queda oculta y funcionando en la bandeja del sistema.

Para cerrar completamente:

1. Pulsa el botón `Menú`.
2. Elige `Salir`.

También puedes usar el icono de la bandeja del sistema.

## Manual con F1

Pulsa `F1` desde la ventana principal para abrir este manual.

La aplicación convierte `manual.md` a HTML temporal y lo abre en el navegador predeterminado.

## Menú de la aplicación

El botón `Menú` contiene estas opciones:

- Iniciar con Windows.
- Iniciar con Windows como administrador.
- Iniciar minimizado en la bandeja.
- Minimizar a la bandeja.
- Ver manual.
- Acerca de.
- Salir.

## Iniciar con Windows

Desde el botón `Menú` puedes activar `Iniciar con Windows`.

Esta opción guarda la aplicación en el registro del usuario actual.

Es útil para comandos normales que no necesitan permisos de administrador.

Si también marcas `Iniciar minimizado en la bandeja`, la aplicación se iniciará oculta en la bandeja del sistema.

## Iniciar con Windows como administrador

Desde el botón `Menú` puedes activar `Iniciar con Windows como administrador`.

Esta opción crea una tarea programada elevada de Windows.

La tarea programada se llama:

```text
RescateComandosAdmin
```

Importante:

- Para crear esa tarea, debes ejecutar Rescate Comandos como administrador al menos una vez.
- Una vez creada, Windows podrá iniciar la aplicación elevada al iniciar sesión.
- Si la aplicación está elevada, los comandos que lance también podrán ejecutarse con privilegios elevados.

Windows no permite elevar permisos sin autorización previa cada vez.

La manera correcta de ejecutar comandos como administrador sin pedir permiso cada vez es:

1. Ejecutar Rescate Comandos como administrador.
2. Crear la tarea programada elevada desde el menú.
3. Dejar que Windows arranque la aplicación elevada al iniciar sesión.

## Protección entre inicio normal e inicio como administrador

`Iniciar con Windows` e `Iniciar con Windows como administrador` son opciones excluyentes.

No deben estar activas al mismo tiempo.

La aplicación aplica esta protección:

- Si activas `Iniciar con Windows`, se debe desactivar el inicio como administrador.
- Si activas `Iniciar con Windows como administrador`, se debe desactivar el inicio normal.
- `Iniciar minimizado en la bandeja` sí puede combinarse con cualquiera de las dos.

Configuraciones permitidas:

```text
Iniciar con Windows
```

```text
Iniciar con Windows
Iniciar minimizado en la bandeja
```

```text
Iniciar con Windows como administrador
```

```text
Iniciar con Windows como administrador
Iniciar minimizado en la bandeja
```

Configuración no permitida:

```text
Iniciar con Windows
Iniciar con Windows como administrador
```

## Aviso si ya existe inicio como administrador

Si antes activaste `Iniciar con Windows como administrador` ejecutando la aplicación como administrador, y después abres Rescate Comandos de forma normal, la aplicación no puede modificar esa tarea elevada.

En ese caso, si intentas activar el inicio normal o cambiar la configuración elevada, verás un aviso con botón `Aceptar`.

El mensaje indica que primero debes cerrar Rescate Comandos, ejecutarlo como administrador y desactivar `Iniciar con Windows como administrador`.

Texto del aviso:

```text
Ya tienes configurado 'Iniciar con Windows como administrador'.

No puedo desactivar ni sustituir esa tarea elevada mientras esta aplicación está abierta sin permisos de administrador.

Primero cierra Rescate Comandos, ejecútalo como administrador y desactiva 'Iniciar con Windows como administrador'.

Después podrás activar el inicio normal si lo deseas.
```

## Iniciar minimizado en la bandeja

Desde el botón `Menú` puedes activar `Iniciar minimizado en la bandeja`.

Esta opción queda guardada en `config.json`.

Ejemplo:

```json
{
	"opciones": {
		"iniciar_minimizado": true
	}
}
```

Cuando esta opción está activada, el inicio con Windows añade el argumento:

```text
--oculto
```

Esto hace que la aplicación arranque directamente en la bandeja del sistema.

Si la opción está desactivada, la aplicación se iniciará mostrando la ventana principal.

## Ejecutar comandos como administrador

Para que una regla ejecute comandos con privilegios de administrador, la propia aplicación debe estar ejecutándose como administrador.

Si la aplicación está abierta sin privilegios elevados, los comandos también se ejecutarán sin privilegios elevados.

### Recomendación

1. Copia la aplicación a:

```text
C:\RescateComandos
```

2. Ejecuta la aplicación una vez como administrador.
3. Abre el botón `Menú`.
4. Activa `Iniciar con Windows como administrador`.
5. Opcionalmente activa `Iniciar minimizado en la bandeja`.
6. Reinicia sesión o reinicia Windows.
7. Comprueba que la aplicación arranca sola y elevada.

## Ejemplo para reiniciar NVDA

Nombre:

```text
Reiniciar NVDA
```

Carpeta:

```text
C:\Users\xebol\SynologyDrive\Privada\Comandos
```

Archivo disparador:

```text
nvda.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Stop-Process -Name nvda -Force -ErrorAction SilentlyContinue; Start-Sleep -Seconds 3; Start-Process 'C:\Program Files\NVDA\nvda.exe'"
```

Intervalo:

```text
60
```

Con esta regla, si aparece el archivo `nvda.txt` en la carpeta configurada, NVDA se cerrará y volverá a abrirse.

## Ejemplo para reiniciar NVDA sin complementos

Este ejemplo es útil si sospechas que un complemento bloquea NVDA.

Archivo disparador:

```text
nvda_sin_complementos.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Stop-Process -Name nvda -Force -ErrorAction SilentlyContinue; Start-Sleep -Seconds 3; Start-Process 'C:\Program Files\NVDA\nvda.exe' -ArgumentList '--disable-addons'"
```

## Ejemplo para reiniciar Firefox

Archivo disparador:

```text
firefox.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Stop-Process -Name firefox -Force -ErrorAction SilentlyContinue; Start-Sleep -Seconds 3; Start-Process 'C:\Program Files\Mozilla Firefox\firefox.exe'"
```

## Ejemplo para cerrar Firefox

Archivo disparador:

```text
cerrar_firefox.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Stop-Process -Name firefox -Force -ErrorAction SilentlyContinue"
```

## Ejemplo para reiniciar el Explorador de Windows

Archivo disparador:

```text
explorer.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue; Start-Sleep -Seconds 2; Start-Process explorer.exe"
```

## Ejemplo para reiniciar el equipo

Archivo disparador:

```text
reiniciar_pc.txt
```

Comando:

```cmd
shutdown /r /t 5 /c "Reinicio solicitado por Rescate Comandos"
```

## Ejemplo para apagar el equipo

Archivo disparador:

```text
apagar_pc.txt
```

Comando:

```cmd
shutdown /s /t 5 /c "Apagado solicitado por Rescate Comandos"
```

## Ejemplo para cancelar un apagado o reinicio pendiente

Archivo disparador:

```text
cancelar_apagado.txt
```

Comando:

```cmd
shutdown /a
```

## Ejemplo para bloquear Windows

Archivo disparador:

```text
bloquear.txt
```

Comando:

```cmd
rundll32.exe user32.dll,LockWorkStation
```

## Ejemplo para abrir una página web

Archivo disparador:

```text
web.txt
```

Comando:

```cmd
start "" "https://www.google.com"
```

## Ejemplo para ejecutar un script Python

Archivo disparador:

```text
script.txt
```

Comando:

```cmd
py "C:\Scripts\mi_script.py"
```

## Ejemplo para ejecutar un archivo BAT

Archivo disparador:

```text
bat.txt
```

Comando:

```cmd
"C:\Scripts\mi_script.bat"
```

## Ejemplo para iniciar un servidor local

Archivo disparador:

```text
servidor.txt
```

Comando:

```cmd
py "C:\Servidor\servidor.py"
```

## Ejemplo para reiniciar un servicio de Windows

Este comando necesita que Rescate Comandos esté ejecutándose como administrador.

Archivo disparador:

```text
reiniciar_servicio.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Restart-Service -Name 'NombreDelServicio'"
```

Ejemplo con el servicio de cola de impresión:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Restart-Service -Name 'Spooler'"
```

## Ejemplo para detener un servicio de Windows

Necesita permisos de administrador.

Archivo disparador:

```text
detener_servicio.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Stop-Service -Name 'NombreDelServicio' -Force"
```

## Ejemplo para iniciar un servicio de Windows

Necesita permisos de administrador.

Archivo disparador:

```text
iniciar_servicio.txt
```

Comando:

```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "Start-Service -Name 'NombreDelServicio'"
```

## Consejos de seguridad

No uses carpetas compartidas por otras personas para disparar comandos.

No pongas reglas peligrosas en carpetas públicas.

Evita comandos destructivos salvo que sepas exactamente qué hacen.

Si usas comandos de administrador, protege bien la carpeta sincronizada.

Un archivo disparador vacío es suficiente.

## Recomendaciones para carpetas en la nube

Puedes usar:

- Synology Drive.
- OneDrive.
- Dropbox.
- Google Drive.
- Cualquier carpeta local sincronizada.

La aplicación no depende de una nube concreta.

Solo necesita que el archivo aparezca físicamente en la carpeta monitorizada.

## Solución de problemas

### La regla no se ejecuta

Comprueba:

- Que la regla está activada.
- Que la carpeta existe.
- Que el archivo tiene exactamente el nombre configurado.
- Que el archivo no se llama accidentalmente `nvda.txt.txt`.
- Que el intervalo ya ha pasado.
- Que el comando funciona manualmente.
- Que estás editando el `config.json` correcto.

La aplicación muestra en el registro qué archivo de configuración está usando.

Ejemplo:

```text
Archivo de configuración usado: C:\RescateComandos\config.json
```

### El archivo no se borra

Comprueba:

- Que la opción de borrar archivo está marcada.
- Que la aplicación tiene permisos para borrar en esa carpeta.
- Que la nube no bloquea temporalmente el archivo.
- Que el archivo no está abierto en otro programa.

### El comando necesita permisos de administrador

Activa `Iniciar con Windows como administrador`.

Si no te deja activarlo, ejecuta la aplicación como administrador y vuelve a intentarlo.

Si ya existe una tarea elevada y abriste la aplicación sin permisos de administrador, primero debes abrir Rescate Comandos como administrador y desactivar esa opción.

### NVDA no vuelve a abrir

Comprueba que la ruta existe:

```text
C:\Program Files\NVDA\nvda.exe
```

Prueba el comando manualmente desde CMD.

### La aplicación dice que ya hay otra instancia

Rescate Comandos solo permite una instancia abierta.

Si aparece el aviso de instancia ya iniciada:

1. Revisa la bandeja del sistema.
2. Abre el icono de Rescate Comandos.
3. Elige `Mostrar ventana` o `Salir`.

## Compilación

Para compilar con cx_Freeze:

```cmd
py -m pip install wxPython cx_Freeze
py setup.py build
```

El ejecutable quedará en una carpeta dentro de `build`.

Copia también `manual.md` junto al ejecutable si fuera necesario.

El `setup.py` ya intenta incluir `manual.md` automáticamente en la compilación.

## Recomendación final

Para un uso estable y sencillo:

1. Crea la carpeta:

```text
C:\RescateComandos
```

2. Copia dentro:

```text
RescateComandos.exe
manual.md
config.json
```

3. Ejecuta una vez como administrador.
4. Activa `Iniciar con Windows como administrador`.
5. Activa `Iniciar minimizado en la bandeja`.
6. Crea reglas usando una carpeta privada sincronizada.

Con esta configuración, la aplicación arrancará sola, elevada y oculta en la bandeja del sistema.
