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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Script para ejecutar unos comandos sólo si un programa está funcionando
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Script para ejecutar unos comandos sólo si un programa está funcionando  (Leído 3,389 veces)
rggamero

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Script para ejecutar unos comandos sólo si un programa está funcionando
« 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


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Script para ejecutar unos comandos sólo si un programa está funcionando
« Respuesta #1 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.


En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

rggamero

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Script para ejecutar unos comandos sólo si un programa está funcionando
« Respuesta #2 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
En línea

.:Xx4NG3LxX:.

Desconectado Desconectado

Mensajes: 202



Ver Perfil WWW
Re: Script para ejecutar unos comandos sólo si un programa está funcionando
« Respuesta #3 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..
En línea

"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
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.067



Ver Perfil
Re: Script para ejecutar unos comandos sólo si un programa está funcionando
« Respuesta #4 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.
En línea

rggamero

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: BATCH Script para ejecutar sólo si un programa está funcionando
« Respuesta #5 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. >:(
En línea

rggamero

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Script para ejecutar unos comandos sólo si un programa está funcionando
« Respuesta #6 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
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