OVH Cloud OVH Cloud

Redirection de résultat de commande vers un fichier

9 réponses
Avatar
Rahan
Bonjour,

J'ai déjà posé la question mais n'ayant pas de réponse, je me permet de la
reposer une dernière fois avant de passer sur d'autres pistes plus complexes
pour résoudre mon problème.

Voila. Mon programme "MonProg.exe" tourne en permamance en mode DOS, il ne
s'arrête pas.
De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et ça
peut être à tout moment.

Je souhaite faire une redirection de ce qui est affiché à l'écran dans un
fichier en ajoutant l'heure au début ou à la fin de la ligne.

Pour la redirection, je peux biensure le faire avec :
MonProg.exe >> MonProg.log

Mais comment ajouter l'heure ? Malheureusement, l'heure n'est pas affichée
par MonProg.exe

Théoriquement, quelque chose du genre :
MonProg.exe >> time/t & MonProg.log
ou
MonProg.exe >> time/t %1 >> MonProg.log
ou quelque chose avec un grep...

Mais je ne trouve pas la bonne formule.

L'objectif final est de savoir à quel moment précis une ligne a été envoyée
par MonProg.exe. Et pour avoir cette info, il faut absolument loguer l'heure
à chaque fois que MonProg.exe imprime quelque chose à l'écran.

Une idée SVP ?

Merci !!!
Rahan

9 réponses

Avatar
JF
*Bonjour Rahan* !
news:44eeb3fe$0$308$

| Bonjour,
|
| J'ai déjà posé la question mais n'ayant pas de réponse, je me permet de la
| reposer une dernière fois avant de passer sur d'autres pistes plus
| complexes pour résoudre mon problème.
|
| Voila. Mon programme "MonProg.exe" tourne en permamance en mode DOS, il ne
| s'arrête pas.
| De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et ça
| peut être à tout moment.
|
| Je souhaite faire une redirection de ce qui est affiché à l'écran dans un
| fichier en ajoutant l'heure au début ou à la fin de la ligne.
|
| Pour la redirection, je peux biensure le faire avec :
| MonProg.exe >> MonProg.log
|
| Mais comment ajouter l'heure ? Malheureusement, l'heure n'est pas affichée
| par MonProg.exe
|
| Théoriquement, quelque chose du genre :
| MonProg.exe >> time/t & MonProg.log
| ou
| MonProg.exe >> time/t %1 >> MonProg.log
| ou quelque chose avec un grep...
|
| Mais je ne trouve pas la bonne formule.
|
| L'objectif final est de savoir à quel moment précis une ligne a été
| envoyée par MonProg.exe. Et pour avoir cette info, il faut absolument
| loguer l'heure à chaque fois que MonProg.exe imprime quelque chose à
| l'écran.
|
| Une idée SVP ?
|
| Merci !!!
| Rahan

j'y avais réfléchi mais pas réussi.
ils vont te faire ça en deux secondes ici
news:microsoft.public.fr.scripting

--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]
Avatar
Azur
ca marche pas , ceci ??

monprog.exe >>monprog.log
time >>monprog.log

-azur-

"JF" a écrit dans le message de news:

*Bonjour Rahan* !
news:44eeb3fe$0$308$

| Bonjour,
|
| J'ai déjà posé la question mais n'ayant pas de réponse, je me permet de
la
| reposer une dernière fois avant de passer sur d'autres pistes plus
| complexes pour résoudre mon problème.
|
| Voila. Mon programme "MonProg.exe" tourne en permamance en mode DOS, il
ne
| s'arrête pas.
| De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et ça
| peut être à tout moment.
|
| Je souhaite faire une redirection de ce qui est affiché à l'écran dans
un
| fichier en ajoutant l'heure au début ou à la fin de la ligne.
|
| Pour la redirection, je peux biensure le faire avec :
| MonProg.exe >> MonProg.log
|
| Mais comment ajouter l'heure ? Malheureusement, l'heure n'est pas
affichée
| par MonProg.exe
|
| Théoriquement, quelque chose du genre :
| MonProg.exe >> time/t & MonProg.log
| ou
| MonProg.exe >> time/t %1 >> MonProg.log
| ou quelque chose avec un grep...
|
| Mais je ne trouve pas la bonne formule.
|
| L'objectif final est de savoir à quel moment précis une ligne a été
| envoyée par MonProg.exe. Et pour avoir cette info, il faut absolument
| loguer l'heure à chaque fois que MonProg.exe imprime quelque chose à
| l'écran.
|
| Une idée SVP ?
|
| Merci !!!
| Rahan

j'y avais réfléchi mais pas réussi.
ils vont te faire ça en deux secondes ici
news:microsoft.public.fr.scripting

--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]




Avatar
Rahan
Non !! ça ne marche pas.

Parceque MonProg.exe ne redonne pas la main pour executer "time/t >>
MonProg.log" !!!
il faut que ça soit fait à la volé.

MonProg.exe tourne en permanence. Pour l'arrêter, il faut faire un CTRL+C.

Merci
Rahan


"Azur" a écrit dans le message de
news:e%
ca marche pas , ceci ??

monprog.exe >>monprog.log
time >>monprog.log

-azur-

"JF" a écrit dans le message de news:

*Bonjour Rahan* !
news:44eeb3fe$0$308$

| Bonjour,
|
| J'ai déjà posé la question mais n'ayant pas de réponse, je me permet
de


la
| reposer une dernière fois avant de passer sur d'autres pistes plus
| complexes pour résoudre mon problème.
|
| Voila. Mon programme "MonProg.exe" tourne en permamance en mode DOS,
il


ne
| s'arrête pas.
| De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et
ça


| peut être à tout moment.
|
| Je souhaite faire une redirection de ce qui est affiché à l'écran dans
un
| fichier en ajoutant l'heure au début ou à la fin de la ligne.
|
| Pour la redirection, je peux biensure le faire avec :
| MonProg.exe >> MonProg.log
|
| Mais comment ajouter l'heure ? Malheureusement, l'heure n'est pas
affichée
| par MonProg.exe
|
| Théoriquement, quelque chose du genre :
| MonProg.exe >> time/t & MonProg.log
| ou
| MonProg.exe >> time/t %1 >> MonProg.log
| ou quelque chose avec un grep...
|
| Mais je ne trouve pas la bonne formule.
|
| L'objectif final est de savoir à quel moment précis une ligne a été
| envoyée par MonProg.exe. Et pour avoir cette info, il faut absolument
| loguer l'heure à chaque fois que MonProg.exe imprime quelque chose à
| l'écran.
|
| Une idée SVP ?
|
| Merci !!!
| Rahan

j'y avais réfléchi mais pas réussi.
ils vont te faire ça en deux secondes ici
news:microsoft.public.fr.scripting

--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]








Avatar
Rahan
"JF" a écrit dans le message de
news:
*Bonjour Rahan* !
news:44eeb3fe$0$308$

| Bonjour,
|
| J'ai déjà posé la question mais n'ayant pas de réponse, je me permet de
la

| reposer une dernière fois avant de passer sur d'autres pistes plus
| complexes pour résoudre mon problème.
|
| Voila. Mon programme "MonProg.exe" tourne en permamance en mode DOS, il
ne

| s'arrête pas.
| De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et ça
| peut être à tout moment.
|
| Je souhaite faire une redirection de ce qui est affiché à l'écran dans
un

| fichier en ajoutant l'heure au début ou à la fin de la ligne.
|
| Pour la redirection, je peux biensure le faire avec :
| MonProg.exe >> MonProg.log
|
| Mais comment ajouter l'heure ? Malheureusement, l'heure n'est pas
affichée

| par MonProg.exe
|
| Théoriquement, quelque chose du genre :
| MonProg.exe >> time/t & MonProg.log
| ou
| MonProg.exe >> time/t %1 >> MonProg.log
| ou quelque chose avec un grep...
|
| Mais je ne trouve pas la bonne formule.
|
| L'objectif final est de savoir à quel moment précis une ligne a été
| envoyée par MonProg.exe. Et pour avoir cette info, il faut absolument
| loguer l'heure à chaque fois que MonProg.exe imprime quelque chose à
| l'écran.
|
| Une idée SVP ?
|
| Merci !!!
| Rahan

j'y avais réfléchi mais pas réussi.
ils vont te faire ça en deux secondes ici
news:microsoft.public.fr.scripting

--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]


Merci pour le lien et merci aussi pour le temps accordé.
Je vais posté un message sur l'autre forum.

Si je trouve une réponse, je ferai un retour sur ce forum.

Merci !!

Cordialement
Rahan

Avatar
JF
*Bonjour Rahan* !
news:44eed9a7$0$26941$


| Si je trouve une réponse, je ferai un retour sur ce forum.

Bonne idée, merci et bonne chance !

--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]
Avatar
Rahan
Bon, un certain Fred ceinture noir en script m'a fournit la solution en
quelques minutes sur le forum ...scripting pour ne pas dire en moins d'une
minute ! :) :) :)

Son script fonctionne dans mon cas sans besoin d'appliquer le script
oem2ansi de JC

Que du plaisir !

Merci de votre aide et de m'avoir orienter vers le bon forum !

Bon week-end à tous

Cordialement
Rahan


++++++++++++++++++++++++ REPONSE ++++++++++++++++++++++++

Une idée en vbscript.
Copie colle ce qui suit dans un fichier texte que tu renommes en log.vbs

8<--- début ---------------------
Set fso = CreateObject("Scripting.FileSystemObject")
Set logFile = fso.OpenTextFile(WScript.Arguments(0), 8, True)
while Not WScript.StdIn.AtEndOfStream
logFile.WriteLine(Now & " : " & WScript.StdIn.ReadLine)
Wend
logFile.Close
8<--- fin -----------------------

Ensuite tu lances ton programme avec la commande suivante :

MonProg.exe | cscript log.vbs fichierLog.txt

Essaie déjà cela mais tu vas probablement avoir des problèmes de codage.
Il faudra probablement ensuite convertir le fichier obtenu pour qu'il
soit lisible avec bloc-note.
Pour cela : oem2ansi.vbs chez JC Bellamy
http://bellamyjc.org

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
JF
*Bonjour Rahan* !
news:44ef0626$0$26947$

| Bon, un certain Fred ceinture noir en script m'a fournit la solution en
| quelques minutes sur le forum ...scripting pour ne pas dire en moins d'une
| minute ! :) :) :)
|
| Son script fonctionne dans mon cas sans besoin d'appliquer le script
| oem2ansi de JC
|
| Que du plaisir !
|
| Merci de votre aide et de m'avoir orienter vers le bon forum !
|
| Bon week-end à tous
|
| Cordialement
| Rahan
|
|
| ++++++++++++++++++++++++ REPONSE ++++++++++++++++++++++++
|
| Une idée en vbscript.
| Copie colle ce qui suit dans un fichier texte que tu renommes en log.vbs
|
| 8<--- début ---------------------
| Set fso = CreateObject("Scripting.FileSystemObject")
| Set logFile = fso.OpenTextFile(WScript.Arguments(0), 8, True)
| while Not WScript.StdIn.AtEndOfStream
| logFile.WriteLine(Now & " : " & WScript.StdIn.ReadLine)
| Wend
| logFile.Close
| 8<--- fin -----------------------
|
| Ensuite tu lances ton programme avec la commande suivante :
|
| MonProg.exe | cscript log.vbs fichierLog.txt
|
| Essaie déjà cela mais tu vas probablement avoir des problèmes de codage.
| Il faudra probablement ensuite convertir le fichier obtenu pour qu'il
| soit lisible avec bloc-note.
| Pour cela : oem2ansi.vbs chez JC Bellamy
| http://bellamyjc.org

Merci beaucoup du retour !
Fred est très sympa et efficace.
Je viens justement d'utiliser OEM2ANSI.VBS
Voir ce fil un peu plus haut :
"imprimer les noms des fichiers d'un répertoire"
http://groups.google.com/groups?threadmDeeea90%240%2427379%24ba4acef3%40news.orange.fr

--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]
Avatar
Jean-Claude BELLAMY
Dans le message :44eed91d$0$26920$,
Rahan a pris la peine d'écrire ce qui suit :
Non !! ça ne marche pas.

Parceque MonProg.exe ne redonne pas la main pour executer "time/t >>
MonProg.log" !!!
il faut que ça soit fait à la volé.

MonProg.exe tourne en permanence. Pour l'arrêter, il faut faire un
CTRL+C.


Je vois le pb ... mais je n'ai pas (encore) la solution ...
L'idéal serait de pouvoir modifier "monprog.exe", mais comme je l'ai écrit,
c'est un "idéal" !

Il faut alors se tourner vers une interception (ou au minimum déetction) de
l'écriture dans le fichier log.
Je pense, p.ex., à un script du style de "WATCHDIR.VBS",
http://www.bellamyjc.org/fr/vbsdownload.html#watchdir
qui surveille la création ou suppression de fichiers dans un répertoire,
avec éventuellement déclenchement d'actions.

----------------------------------------------------------------------
Surveillance de création ou suppression de fichiers dans un répertoire
JCB © 2003
----------------------------------------------------------------------
Syntaxe :
watchdir <répertoire> [<période> [<application>]]
Paramètres :
<répertoire> : Nom du répertoire à surveiller
NB: à encadrer par des guillemets
si le nom contient des espaces
<période> : (facultatif) Période de scrutation en secondes
(1 seconde par défaut)
<application> : (facultatif) Application à lancer en cas
de création ou suppression de fichier.
Elle reçoit en paramètres :
- un indicateur de création ("C") ou de suppression ("S")
- le nom complet du fichier créé ou supprimé
L'application peut être un exécutable ou un script
(fichier batch .BAT ou .CMD ou script VBS,...)


Une idée, en passant, comme çà, sans rien avoir à modifier dans le script
... :
On lance à la fois
"monprog.exe >> monprog.log"
et
"watchdir.vbs nom-du-répertoire-contenant-monprog.log 2
monbatch.bat"

(J'ai prévu dans cet exemple arbitrairement une scrutation de 2 secondes.)

Lors de la 1ère écriture (et donc création) de "monprog.log" , cela va être
détecté par "watchdir" etqui va lacenr "monbatch.bat"
"monbatch.bat" va contenir (p.ex.) ceci :
------ couper ici ------
@echo off
echo monprog.exe le %DATE% a %TIME% >> superlog.log
copy monprog.log+superlog.log superlog.log
del monprog.log
------ couper ici ------

Ce script va concaténer dans le fichier "superlog.log" (vide au départ) un
message contenant date et heure en cours et le fichier "monprog.log" créé
par monprog.exe
Puis on supprime monprog.log de façon à ce que monprog.exe le recrée, et
ainsi que çà soit détecté à nouveau par watchdir, et ansi de suite.

NB: j'ignore quelle est la période d'écriture de monprog.exe.
Si elle est inférieure à 1 seconde, il faudra bidouiller le script VBS,
sinon on va regrouper sans le vouloir les messages contenus dans une
seconde.

Je t'ai donné une piste ..
A présent à toi le "bébé" ... ;-)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
JF
*Bonjour Jean-Claude BELLAMY* !
news:ej7LH$

Pardonne-moi de te dire bonjour Jean-Claude :o)
et de faire deux remarques :

1/ Ce problème a été résolu hier.
Tu as expliqué récemment la façon dont tu utilisais les NG,
et tu donnes souvent l'impression de ne pas lire les autres
réponses à un message. Il y a peut-être un problème de lecteur ?

2/ Du coup j'en profite :
Tu utilises un référencement automatique qui donne :
"Dans le message :44eed91d$0$26920$, ..."

J'aimerais suggérer que tu utilises le protocole news:
Pourquoi ?
a/ Cela évite à celui qui clique sur cette référence de voir s'ouvrir
un nouveau courrier à l'ordre de 44eed91d$0$26920.....
b/ Cela permet à Google de faire un lien opérationnel avec
le message de référence, ce qui est un peu le but.
Sinon ça donne ceci :
http://groups.google.com/groups?threadm=ej7lh%24sygha.1288%40tk2msftngp03.phx.gbl

Comme tu le vois ta référence de message est perdue, pour des soucis de
confidentialité. Alors qu'en utilisant le protocole news: Google comprend
que ce n'est pas une adresse privée mais un NG, et répertorie le lien.

Pour résumer :44eed91d$0$26920$ ne sert à rien.
news:44eed91d$0$26920$
est conservé efficacement par Google.
Et puis quand on clique dessus, ça ouvre bien le bon message
dans Outlook au lieu de faire un stupide nouveau courrier.
J'ai dit ! :o)
--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]