Script para ejecutar unos comandos sólo si un programa está funcionando

Iniciado por rggamero, 11 Abril 2020, 23:26 PM

0 Miembros y 1 Visitante están viendo este tema.

rggamero

La intención es que se apague el PC cuando terminen las descargas del emule, pero que este script sólo se ejecute cuando esté funcionado emule.

He preparado lo siguiente buscando en internet, pero no conozco bien el lenguaje script y quería que sólo se ejecute cuando esté funcionado emule y no sé como poner esta condición:

@echo off
@cls
@cd C:\prog\emule\temp
@if not exist *.part.met goto apaga
@goto end
:Apaga
Echo Apagando el PC...
@shutdown -s
@goto end
:End
@exit

Muchas gracias

@XSStringManolo

Con tasklist muestras los procesos, con findstr() buscas el nombre del proceso. No sé si puedes usar Sleep() en batch supongo que también. Creo que no necesitas más. Usas Sleep() para que no esté a correr todo el rato el programa. Metes la comprobación en un bucle y le añades el Sleep después de la comprobación dentro del bucle.

Busca info de como usar todo esto en batch que seguro que te sale. Si no, hazlo con code:blocks en C++ que en mi opinión es mucho más fácil y configurable para esta tarea.

rggamero

Muchas gracias @XSStringManolo
Disculpa pero soy nuevo en esto y si no es mucha molestia, no me entero mucho.
¿puedes ponerme los comandos del sleep o todo lo demás en la secuencia del script?
Como ves mi ignorancia no me ayuda.
Muchas gracias y saludos,
rggamero

.:Xx4NG3LxX:.

Saludos,

No soy Mod ni nada de eso pero utiliza etiquetas GeShi ;P

Una recomendación: Cuando ya has apagado el eco con @echo off, no hace falta colocar una arroba (@) antes de cada comando. Claro... Si ya es tu forma de programar, bien.... Sólo digo...

Lo que dice @XSStringManolo, está bien... Aunque es cierto que en otros lenguajes sería más fácil. Pero si te propones a hacerlo en Batch... Adelante!

PD: Puedes ponerle "[BATCH]" al título? Asi hay menos confusión..
"Quizá Batch no sea un lenguaje de programación, pero no obstante deja de ser útil. Asi que no anden diciendo «Que ganas de perder el tiempo»"



EdePC

Saludos,

- Lo más sencillo es crear un bucle que vaya comprobando y el tiempo de espera que comenta @XSStringManolo se suele hacer en Windows con TimeOut, sin embargo se acostumbra recomendar Ping por consumir menos recursos:

Código (dos) [Seleccionar]
@Echo Off
CD C:\prog\emule\temp

:bucle
  If Not Exist *.part.met GoTo apaga
  Ping -n 6 127.0.0.1 > NUL          &Rem Esto espera 5 segundos [Timeout 5]
  GoTo bucle

:apaga
  Echo Apagando el PC...
  ShutDown -S
  GoTo end

:end
  Exit


- He escuchado hablar de Emule pero nunca lo instalé o utilicé ... de momento ando corto de Internet y no podría probarlo, pero veo que estás comprobando por ".part.met", supongo que se puede hacer de esa manera, al menos yo también suelo revisar esos .part de descargas en curso en caso de Torrents, JDownloader o IDM.

rggamero

Muchas gracias a todos.
El problema básicamente es que no tengo ni idea de la programación batch, pero buscando en internet encontré el script con los comandos que os remití, y me funciona perfectamente como archivo bat para apagar el PC cuando terminan las descargas del emule.
EdePC, en el emule es similar a las descargas de los navegadores *.part, sólo que mientras hay un archivo *.part.met, hay descargas pendientes y cuando desaparece, es que han finalizado las descargas.
A la secuencia de comandos que os remití sólo hay que añadir que se ejecuten únicamente cuando esté funcionando el emule, de forma que no se ejecute en el programador de tareas de windows cada hora por ejemplo de forma indefinida. No sé qué comandos, bucles, etc. tengo que emplear.
A ver si me podeis ayudar.
Muchas gracias. >:(

rggamero

¿Nadie me puede ayudar?
Lo único que necesito es añadir a la secuencia de comandos siguiente, que se ejecuten únicamente cuando esté funcionando el emule, de forma que no se ejecute en el programador de tareas de windows cada hora por ejemplo de forma indefinida. No sé qué comandos, bucles, etc. tengo que emplear.
A ver si me podeis ayudar.

@echo off
@cls
@cd C:\prog\emule\temp
@if not exist *.part.met goto apaga
@goto end
:Apaga
Echo Apagando el PC...
@shutdown -s
@goto end
:End
@exit