Partage
  • Partager sur Facebook
  • Partager sur Twitter

[BATCH] Relancer bat dès qu'il crash

19 octobre 2017 à 22:47:39

Bonjour,

Je possède un rig de minage d'Ethereum, cependant de temps en temps ma connexion internet crash et/ou le rig plante ce qui fait fermer le mineur ou redémarrer l'ordinateur. Du coup il faut que je relance le mineur manuellement (qui est sous le format .bat) et j'aimerai le faire de façon automatisée.

J'ai déjà copié un raccourcis du fichier .bat du mineur dans les programmes de démarrage pour lancer le mineur automatiquement dès que l'ordinateur démarre, mais j'aimerai savoir si il est possible d'écrire un autre fichier .bat qui teste la présence du processus du mineur et qui le lance si celui-ci est fermé.

Je pensais à un truc du genre :

- Si "Processus mineur= 1"

  Attendre 60sec

- Sinon

  Lancer "Processus Mineur"

- Redémarrer la boucle

(C'est un algorithme très brouillon et je m'y connais pas trop dans les lignes de commandes...)

Est ce que quelqu'un aurait une idée ?

Merci,

Yann

  • Partager sur Facebook
  • Partager sur Twitter
20 octobre 2017 à 14:31:36

@echo off

:loop

start /wait Ton_rig.exe
"Raccourci_Ton_rig.lnk"

goto :loop

Voilà ce que je propose :)

Dans le dossier démarrage de ton ordi, tu vas mettre ce petit programme, ainsi que le raccourci qui mène à ton rig.

Le script est très simple : il attend que ton processus soit fermé avant d'exécuter une ligne, laquelle permet de redémarrer le rig, tout simplement :)

  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2017 à 15:56:49

Bonjour,

ceci devrait te convenir (si ton script mineur.bat se ferme, ce script le relancera) :

@echo off
set title_other_script="tt en batch"
set file_other_script="C:\chemin\tt.bat"

:loop
set mypid=
cls
for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /C:%title_other_script%') do (set "mypid=%%~a")
If defined mypid (timeout /T 60 &goto :loop)
start %title_other_script% %file_other_script%
goto :loop

Ligne 2: Tu remplace la valeur par le nom de la fenêtre de ton mineur.
     Exemple: Ton mineur.bat contient le code 'title Mon Mineur' alors ta ligne deux sera comme ceci ==> set title_other_script="Mon Mineur"

Ligne 3: Tu remplace la valeur par l'emplacement de ton script mineur.

  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2017 à 17:59:13

Bonjour,

Je reposte un message pour faire part des petites améliorations dans le script :

@echo off
Title Relance un script MS-DOS quand il crash
set title_windows_other_script="tt en batch"
set file_other_script="C:\chemin\tt.bat"
 
:loop
set mypid=
cls
REM Check si une fenêtre à le titre %title_windows_other_script% parmis les processus cmd.exe
for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /C:"cmd.exe" ^| findstr /C:%title_windows_other_script%') do (set "mypid=%%~a")
If not defined mypid (start %title_windows_other_script% %file_other_script%)
timeout /T 60
goto :loop



-
Edité par Zaibai 29 octobre 2017 à 17:59:45

  • Partager sur Facebook
  • Partager sur Twitter
14 février 2018 à 11:49:33

Merci pour ces infos, je vais m'en servir :)
  • Partager sur Facebook
  • Partager sur Twitter