MS DOS Backup -> Ausgabe in HTML

Anfängerfragen zum Programmieren mit PureBasic.
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

MS DOS Backup -> Ausgabe in HTML

Beitrag von Mr.Vain »

Hallo,

ich möchte eine Backup-Prozedur auswerten und als HTML Code per Mail versenden.

Folgendermaßen habe ich mir das gedacht:

In der Backup Prozedur werden die Fehlercodes in eine extra Datei geschrieben. z.B.:

Sicherung auf HDD = 1
Sicherung auf Band = 0
...

Hier möchte ich ein kleines Programm schreiben, welches diesen Code auswertet udn in eine HTML Tabelle schreibt, die per Mail versendet wird.


1. Wie mache ich das am "schnellsten/besten"?
2. Wie kann ich die Festplattenbelegung via Befehl auswerten? Gibt es da ein Programm für?

Gruß
Mr.vain
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Kiffi »

Zu 1.)
Mr.Vain hat geschrieben:ich möchte eine Backup-Prozedur auswerten und als HTML Code per Mail versenden.
denk daran, dass manche Leute (so wie ich) HTML in den Mails abgeschaltet haben.

Wenn dieses Backup-Programm von Dir ist, kannst Du HTML ja bereits
'on the fly' schreiben. Das geht mit ner normalen Stringverknüpfung.
Dann brauchst Du kein Extra-Programm, mit dem Du dann Dein Log auswertest.


Zu 2.)
http://www.purebasic.fr/german/viewtopi ... 21#p261821

Grüße ... Kiffi
a²+b²=mc²
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Mr.Vain »

Kiffi hat geschrieben:Zu 1.)
Mr.Vain hat geschrieben:ich möchte eine Backup-Prozedur auswerten und als HTML Code per Mail versenden.
denk daran, dass manche Leute (so wie ich) HTML in den Mails abgeschaltet haben.
Die Backup-Prozedur ist komplett in DOS (Batch) geschrieben. Wobei das ja eigentlich auch gehen müsste.

z.B. so:

if %errorlevel% == 1 echo <td>Sicherung 1</td><td>erfolgreich</td> >>log.html
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Kiffi »

Mr.Vain hat geschrieben:Die Backup-Prozedur ist komplett in DOS (Batch) geschrieben.
achso. Habe ich überlesen.

Wenn Du die Log mit PB extern auslesen willst, dann geht das am besten mit
ReadFile(), EOF(), Readstring() und CloseFile(). Wenn Du hierzu Hilfe benötigst,
dann bitte nochmal nachfragen.
Mr.Vain hat geschrieben:Wobei das ja eigentlich auch gehen müsste. [...]
prinzipiell ja. Wobei ich mir da nicht sicher bin, ob Du Dir damit nicht die
log.html mit jedem echo überschreibst. Gibt es unter DOS sowas wie 'append'?

Grüße ... Kiffi
a²+b²=mc²
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Mr.Vain »

Wie kann ich denn einen String am Ende einer Datei anfügen?

Erst mit OpenFile() öffnen und dann mit WriteString() einfügen?

Wird das dann am Ende eingefügt?


2.Frage: Kann ich die API Befehle auch remote auf einem entfernten Rechner starten?- um so z.B. die Festplattenbelegung zu bekommen?
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Kiffi »

Mr.Vain hat geschrieben:Wie kann ich denn einen String am Ende einer Datei anfügen?
OpenFile() -> FileSeek(Eof()) -> WriteString()

Grüße ... Kiffi
a²+b²=mc²
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Mr.Vain »

Irgendie klappt das nur halb...

Wenn ich das Programm mehrfach starte, wird die log Datei immer überschrieben...

Code: Alles auswählen

Drive$   = ProgramParameter()
Log$     = ProgramParameter()


Procedure.d GetDiskFreeSpace(Drive$)

   Protected Result.d = -1, BytesFreeToCaller.q, TotalBytes.q, TotalFreeBytes.q

   If OSVersion() > #PB_OS_Windows_95
      SetErrorMode_(#SEM_FAILCRITICALERRORS)
      GetDiskFreeSpaceEx_(@Drive$, @BytesFreeToCaller, @TotalBytes, @TotalFreeBytes)
      SetErrorMode_(0)
      Result = TotalFreeBytes / 1048576 /1024
      Total = TotalBytes
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure.d GetDiskSpace(Drive$)
   Protected Result.d = -1, BytesFreeToCaller.q, TotalBytes.q, TotalFreeBytes.q

   If OSVersion() > #PB_OS_Windows_95
      SetErrorMode_(#SEM_FAILCRITICALERRORS)
      GetDiskFreeSpaceEx_(@Drive$, @BytesFreeToCaller, @TotalBytes, @TotalFreeBytes)
      SetErrorMode_(0)
      Result = TotalBytes / 1048576 /1024
   EndIf

   ProcedureReturn Result
EndProcedure

If Log$= ""
MessageRequester("Fehler","Bitte Log-Datei angeben!")
End
EndIf
If Drive$ = ""
MessageRequester("Fehler","Bitte Laufwerk angeben")
End
EndIf

FreeGB.d = 0
FreeGB   = GetDiskFreeSpace(Drive$)

TotalGB.d = 0
TotalGB  = GetDiskSpace(Drive$)

OpenFile(1,Log$)
FileSeek(1,Eof(1))
WriteString(1,"<html><body><center><table border=1><tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr>")
WriteString(1,"<tr><td><b>"+Drive$+"</b></td><td><b>"+StrD(TotalGB, 2)+" GB</b></td><td><b>"+StrD(FreeGB, 2)+" GB</b></b></td></tr></table></body></html>")
CloseFile(1)

;MessageRequester (" OK",    "Free: " + StrD(FreeGB, 2)+ " GB  von     "+StrD(TotalGB,2)+ " GB")
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von AndyMars »

Mr.Vain hat geschrieben:Irgendie klappt das nur halb...

Code: Alles auswählen

...
WriteString(1,"<html><body><center><table border=1><tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr>")
WriteString(1,"<tr><td><b>"+Drive$+"</b></td><td><b>"+StrD(TotalGB, 2)+" GB</b></td><td><b>"+StrD(FreeGB, 2)+" GB</b></b></td></tr></table></body></html>")
...
Ich denke, du solltest WriteStringN() verwenden - sonst schreibst du immer in die gleich Zeile...

PS: Blödsinn - sry - meine Finger waren offenbar schneller wie meine Gedanken... ;) Aber übersichtlicher würde es schon...
Zuletzt geändert von AndyMars am 11.01.2010 16:25, insgesamt 2-mal geändert.
Grüsse von AndyMars
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Kiffi »

Mr.Vain hat geschrieben:Irgendie klappt das nur halb...
[...]

Code: Alles auswählen

OpenFile(1,Log$)
FileSeek(1,Eof(1))
WriteString(1,"<html><body><center><table border=1><tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr>")
WriteString(1,"<tr><td><b>"+Drive$+"</b></td><td><b>"+StrD(TotalGB, 2)+" GB</b></td><td><b>"+StrD(FreeGB, 2)+" GB</b></b></td></tr></table></body></html>")
CloseFile(1)
der Knackpunkt ist, dass Du in Deinem Log mit Deinem Code oben mehrere <html><body> - Tags hast.
<html><body><table border=1>
<tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr>
<tr><td><b>C:\</b></td><td><b>100 GB</b></td><td><b>50 GB</b></b></td></tr>
</table></body></html>
<html><body><table border=1>
<tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr>
<tr><td><b>C:\</b></td><td><b>100 GB</b></td><td><b>40 GB</b></b></td></tr>
</table></body></html>
<html><body><table border=1>
<tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr>
<tr><td><b>C:\</b></td><td><b>100 GB</b></td><td><b>30 GB</b></b></td></tr>
</table></body></html>
Das soll doch (wenn ich es recht verstanden habe) eher so aussehen:
<html><body><table border=1>
<tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr>
<tr><td><b>C:\</b></td><td><b>100 GB</b></td><td><b>50 GB</b></b></td></tr>
<tr><td><b>C:\</b></td><td><b>100 GB</b></td><td><b>40 GB</b></b></td></tr>
<tr><td><b>C:\</b></td><td><b>100 GB</b></td><td><b>30 GB</b></b></td></tr>
</table></body></html>
Grüße ... Kiffi
a²+b²=mc²
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: MS DOS Backup -> Ausgabe in HTML

Beitrag von Mr.Vain »

Kiffi hat geschrieben: der Knackpunkt ist, dass Du in Deinem Log mit Deinem Code oben mehrere <html><body> - Tags hast.

Ja, das ist schon richtig. Mir ist aber aufgefallen, dass PB beim zweiten Starten, die Ausgabe halt nicht hinzufügt.

Beim 1. Starten sieht die Log so aus:

Code: Alles auswählen

 <html><body><center><table border=1><tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr><tr><td><b>C:\</b></td><td><b>74.50 GB</b></td><td><b>16.20 GB</b></b></td></tr></table></body></html>
Beim 2. Starten so:

Code: Alles auswählen

<html><body><center><table border=1><tr><td>Festplatte</td><td>Gesamtgröße</td><td>freier Speicher</td></tr><tr><td><b>C:\</b></td><td><b>74.50 GB</b></td><td><b>16.20 GB</b></b></td></tr></table></body></html>>
Antworten