Hallo zusammen, wie kann ich mit Windows-Batchdateien die Ausgabe eines Programms laufend in eine Textdatei schreiben, während die Haupt-Batch noch weiterläuft? Mein erster Versuch war: start /min programm.exe >> logfile.csv Dann wird aber das Ergebnis des Programms im neuen Fenster am Bildschirm angezeigt. Mit einer neuen Batchdatei (log.bat), die ich per start /min log.bat aufrufe (in log.bat: programm.exe >> logfile.csv) wird zwar das Ergebnis des Programms in die Datei geschrieben, jedoch erst nachdem das Programm beendet ist. Das Programm sollte aber dauerhaft laufen und gibt alle paar Sekunden Werte aus, die dann jeweils sofort an die Logdatei angehängt werden sollen. Gibt es dafür in Batch irgendeine Möglichkeit?
tail --help eingeben gibts zumindest bei w7 unter unix "man tail"
Hallo Ich, die Umleitung in das Logfile müsste so funktionieren. Die Datei wird dabei aber nicht sofort geschrieben, sondern das erfolgt erst wenn eine gewisse Datenmenge in der Pipe vorhanden ist. Nach meinen Erfahrung spätestens nach 4kByte. Gruss JensM
Wegstaben Verbuchsler schrieb: > tail --help eingeben > gibts zumindest bei w7 Dann habe ich kein Win7:
1 | F:\kw>tail --help |
2 | 'tail' is not recognized as an internal or external command, |
3 | operable program or batch file. |
tail hab ich leider nicht unter Win XP. Wie sollte ich das verwenden? Wenn erst nach 4kByte gespeichert wird, bringt mir das nichts. Z.Zt. gibt es alle 900 Sekunden ca. 30 Byte aus, dann wäre das über ein Tag Verzögerung.
Hm...
1 | prog | test_c "file.txt" |
1 | #include <stdlib.h> |
2 | #include <stdio.h> |
3 | |
4 | int main (int argc, char **argv) |
5 | {
|
6 | int c; |
7 | FILE *f=fopen(argv[0],"wb"); |
8 | if(f!=NULL) |
9 | {
|
10 | while((c=getchar())!=EOF) |
11 | {
|
12 | putc(c,f); |
13 | fflush(f); |
14 | }
|
15 | fclose(f); |
16 | }
|
17 | return 0; |
18 | }
|
Nicht schön aber selten, kannst du das mal testen?
Vllt. hilft bei dem Problem auch die Windows Powershell, die bei Win7 dabei ist, für XP heruntergeladen werden kann: http://de.wikipedia.org/wiki/Windows_PowerShell Meines Wissens kann man damit Programme aufrufen und deren Output auslesen und auch schreiben, allerdings finde ich die Fkt gerade nicht.
Rufus Τ. Firefly schrieb: > Ach? Wo denn? bei mir ist es hier, ich weiß aber nicht wie es da hin gekommen ist ;-) C:\Program Files\WinAVR\WinAVR-20100110\utils\bin (ok, nix W7 spezifisches) bei MS kann man sich was vergleichbares runter laden http://www.windows-commandline.com/2010/08/tail-command-for-windows.html
> FILE *f=fopen(argv[0],"wb");
sollte wohl argv[1] heißen?
Ich werds versuchen.
Die PowerShell installieren ist zuviel Aufwand für so eine Kleinigkeit.
Zum tail-Befehl: Ich versteh immer noch nicht, wie ich den dann benutzen
soll und was der genau macht.
Dein Programm erstellt die Datei sofort, aber schreibt nichts rein, auch nicht nach dem Beenden.
Ich schrieb: > Dein Programm erstellt die Datei sofort, aber schreibt nichts rein, auch > nicht nach dem Beenden. Hast du es richtig aufgerufen?
1 | dein_programm | mein programm datei.txt |
^^^^
M:\...>programm 9 | test_c logfile.csv 9 ist ein Parameter für mein Programm.
Ich schrieb: > M:\...>programm 9 | test_c logfile.csv > > 9 ist ein Parameter für mein Programm. Hab gerade ausführlicher getestet, funktioniert tatsächlich nicht. Sorry, dann weiß ich auch nicht...
Danke trotzdem. Ich habs inzwischen anders gelöst (das Programm läuft nicht dauerhaft, sondern wird von der Batchdatei in regelmäßigen Abständen aufgerufen).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.