Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: rggamero en 11 Abril 2020, 23:26 pm



Título: Script para ejecutar unos comandos sólo si un programa está funcionando
Publicado por: rggamero en 11 Abril 2020, 23:26 pm
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


Título: Re: Script para ejecutar unos comandos sólo si un programa está funcionando
Publicado por: @XSStringManolo en 12 Abril 2020, 00:22 am
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.


Título: Re: Script para ejecutar unos comandos sólo si un programa está funcionando
Publicado por: rggamero en 12 Abril 2020, 16:27 pm
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


Título: Re: Script para ejecutar unos comandos sólo si un programa está funcionando
Publicado por: .:Xx4NG3LxX:. en 12 Abril 2020, 18:59 pm
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..


Título: Re: Script para ejecutar unos comandos sólo si un programa está funcionando
Publicado por: EdePC en 12 Abril 2020, 20:34 pm
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
  1. @Echo Off
  2. CD C:\prog\emule\temp
  3.  
  4. :bucle
  5.  If Not Exist *.part.met GoTo apaga
  6.  Ping -n 6 127.0.0.1 > NUL          &Rem Esto espera 5 segundos [Timeout 5]
  7.  GoTo bucle
  8.  
  9. :apaga
  10.  Echo Apagando el PC...
  11.  ShutDown -S
  12.  GoTo end
  13.  
  14. :end
  15.  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.


Título: Re: BATCH Script para ejecutar sólo si un programa está funcionando
Publicado por: rggamero en 12 Abril 2020, 22:21 pm
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. >:(


Título: Re: Script para ejecutar unos comandos sólo si un programa está funcionando
Publicado por: rggamero en 24 Abril 2020, 22:58 pm
¿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