Analyse de fichier log en temps réel
Bonjour tout le monde,
J'essaye actuellement de créer un scripte .bat en Batch, je suis débutant et me suis servi des infos glané sur le net pour rédiger une bonne partie du programme avec succès, mais il me manque une fonction essentielle.
J'ai besoin d'un scripte pour relier deux logiciels automatiquement. Le premier analyse en temps réel une situation et quand il détecte une action il l'écrit sur un fichier log. J'ai besoin que quand certaines de ces actions se produisent, automatiquement le second logiciel réalise une action.
J'ai réussi à rédiger un scripte qui analyse le fichier log (avec for /f) et repère les moments ou les actions voulues se déroule. J'ai aussi réussi a envoyé un ordre au second logiciel via son api et la commande wget que j'ai installé.
Ce qui me manque maintenant c'est de pouvoir réaliser l'analyse du fichier log en temps réel, pour que le script puisse tourner en continu, et envoyer l'impulsion réseau dès qu'il détecte l'action spécifique(via le fichier log).
De quel manière me conseillez-vous de procéder ?
Merci beaucoup d'avoir pris le temps de lire.
PS voici mon script si vous avez des remarques :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @echo off
setlocal enabledelayedexpansion
set var=variable
for /f "tokens=4 delims=," %%a in ('type "C:\Users\utilisateur\Documents\.log"') do (
set var=%%a
if "!var:~0,4!" == "Sent" (
echo !var:~6!
"C:\Program Files (x86)\GnuWin32\bin\wget.exe" -Pdownload \ http://localhost:8088/API/?Function10
))
rem pause |
Analyse de fichier log en temps réel
Dans l'état actuel des choses, s'il y a 20 ligne dont 5 de video, le compteur détecte 15 ligne, donc le skip=15 ligne, les ligne de 16 à 20 sont donc retraité à nouveau.
mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| @echo off
setlocal enabledelayedexpansion
set var=variable_text
set long=1
set mesure=0
echo %long%
:debut
for /f "skip=%long% delims=" %%a in ('type "C:\Users\utilisateur\Documents\17 janvier 2020.log"') do (
set /a mesure=!mesure!+1
set var=%%a
echo !var!
)
echo la mesure apres la premiere passe est de %mesure%
for /f "tokens=4 delims=, skip=%long%" %%a in ('type "C:\Users\utilisateur\Documents\vMixSocial\17 janvier 2020.log"') do (
set var=%%a
if "!var:~0,4!" == "Sent" (
rem echo !var:~6!
rem "C:\Program Files (x86)\GnuWin32\bin\wget.exe" -Pdownload \ http://localhost:8088/API/?Function=Cut
)
rem TIMEOUT 1
)
set /a long=%long%+%mesure%
echo la mesure est de %mesure%
set mesure=0
echo avant le goto, la longueur est de %long%
pause
goto debut |