Hallo liebe Community,
da ich mein Script/Programm bereits HIER vorgestellt habe, fällt das an dieser Stelle erstmal weg
Ich habe nur noch das Problem, dass ich die Überstunden auch mit in die Text-Datei haben will.
Das Programm soll also ohne offen bleiben zu müssen, irgendwie Start-, End- und Pausenzeiten miteinander verrechnen und die Überstunden dann auch mit in das .txt file schreiben.
Ob es dabei irgendwo eine zweite Datei mit dem Zwischengespeicherten Ergebnis speichert oder was der Geier was, ist mir dabei total egal!
Danke schon einmal im vorraus.
Gruß
Dome
#Edit:
Da manche mit Dos-Befehlen nicht können/wollen, hab ich das Script jetzt mal bearbeitet
Großes Dankeschön für die Hilfe dabei an Christoph54
#Edit:
Alles fertig alles super.
Es wird alles korreckt dokumentiert und verrechnet.
Ich empfehle euch, die Werte in einer .csv-Datei zu speichern, weil es einfach übersichtlicher ist.
Hier einmal die Version mit einer .csv Ausgabe und die mit einer .txt-Ausgabe.
Die .txt-Version kann JEDER benutzten, bei der .csv-Version ist MS-Office erforderlich (oder ein anderes Programm, dass .csv-Dateien öffnen kann).
#Edit:
Die csv-Version werde ich öfters mal Updaten.
Die Updates werde ich dann aber hier NICHT posten, sonder in den anderen Thread HIER !
Hier die "neuen" Versionen:
.csv-Version:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.8.1
Autor: Domenick L.
Kontakt: [email='dnick92@web.de'][/email]
Script Funktion:
Dokumentiert ihre Arbeitzeiten samt Pausen übersichtlich in einer Text-Datei.
Es werden hierbei nur Die Start- und Endzeiten dokumentiert!
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]GUICreate("Arbeitszeiten", 300, 190)
[/autoit] [autoit][/autoit] [autoit]$Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35)
$Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
$Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
$PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
$PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)
GUICtrlCreateLabel ("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10)
GUICtrlCreateLabel ("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
GUICtrlCreateLabel ("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
GUICtrlCreateLabel ("Das Dokument wird Standardmäßig als .csv-Datei", 10, 65)
GUICtrlCreateLabel ("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)
Global $Datum = @MDAY & "." & @MON & "." & @YEAR
Global $kurzDatum = @MON & "." & @YEAR
Global $Pfad = ("C:\Users\"&@UserName&"\Arbeits-Info")
Global $csvPfad = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten-"&$kurzDatum&".csv")
Global $ini = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten.ini")
Global $section = ("Arbeitszeiten")
If Not FileExists ($Pfad) Then DirCreate ($Pfad)
[/autoit] [autoit][/autoit] [autoit]GUISetState()
[/autoit] [autoit][/autoit] [autoit]Do
$msg = GUIGetMsg()
Select
Case $msg = $Start
FileWrite ($csvPfad, "########### ;" & $Datum & " ;###########" & @CRLF & "Begonnen ; ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
If FileExists ($ini) Then FileDelete ($ini)
IniWrite ($ini, $section, "StartHH", @HOUR)
IniWrite ($ini, $section, "StartMM", @MIN)
IniWrite ($ini, $section, "StartSS", @SEC)
Case $msg = $PauseStart
FileWrite ($csvPfad, "Pause von ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
IniWrite ($ini, $section, "PauseStartHH", @HOUR)
IniWrite ($ini, $section, "PauseStartMM", @MIN)
IniWrite ($ini, $section, "PauseStartSS", @SEC)
Case $msg = $PauseEnde
FileWrite ($csvPfad, "Pause bis ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
IniWrite ($ini, $section, "PauseEndeHH", @HOUR)
IniWrite ($ini, $section, "PauseEndeMM", @MIN)
IniWrite ($ini, $section, "PauseEndeSS", @SEC)
Case $msg = $Stop
FileWrite ($csvPfad, "Beendet ; ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
IniWrite ($ini, $section, "BeendetHH", @HOUR)
IniWrite ($ini, $section, "BeendetMM", @MIN)
IniWrite ($ini, $section, "BeendetSS", @SEC)
_GesamtPause ()
_Gesamt ()
FileWrite ($csvPfad, "Gesamt ;" & $PauseHH & ":" & $PauseMM & ":" & $PauseSS & ";" & $GesamtHH & ":" & $GesamtMM & ":" & $GesamtSS & @CRLF)
FileWrite ($csvPfad, "=================================" & @CRLF)
EndSelect
Until $msg = -3 or $msg = $Ende
Func _Gesamt ()
Global $GesamtHH1 = IniRead ($ini, $section, "BeendetHH", @HOUR) - IniRead ($ini, $section, "StartHH", @HOUR)
Global $GesamtMM1 = IniRead ($ini, $section, "BeendetMM", @MIN) - IniRead ($ini, $section, "StartMM", @MIN)
Global $GesamtSS1 = IniRead ($ini, $section, "BeendetSS", @SEC) - IniRead ($ini, $section, "StartSS", @SEC)
Global $GesamtHH = $GesamtHH1 - $PauseHH
Global $GesamtMM = $GesamtMM1 - $PauseMM
Global $GesamtSS = $GesamtSS1 - $PauseSS
EndFunc
Func _GesamtPause ()
Global $PauseHH = IniRead ($ini, $section, "PauseEndeHH", @HOUR) - IniRead ($ini, $section, "PauseStartHH", @HOUR)
Global $PauseMM = IniRead ($ini, $section, "PauseEndeMM", @MIN) - IniRead ($ini, $section, "PauseStartMM", @MIN)
Global $PauseSS = IniRead ($ini, $section, "PauseEndeSS", @SEC) - IniRead ($ini, $section, "PauseStartSS", @SEC)
EndFunc
Exit
[/autoit].txt-Version:
Spoiler anzeigen
[autoit#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Autor: Domenick L.
Kontakt: dnick92@web.de
Script Funktion:
Dokumentiert ihre Arbeitzeiten samt Pausen übersichtlich in einer Text-Datei.
Es werden hierbei nur Die Start- und Endzeiten dokumentiert!
#ce ----------------------------------------------------------------------------
#NoTrayIcon
GUICreate("Arbeitszeiten", 300, 190)
$Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35)
$Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
$Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
$PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
$PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)
GUICtrlCreateLabel ("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10)
GUICtrlCreateLabel ("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
GUICtrlCreateLabel ("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
GUICtrlCreateLabel ("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
GUICtrlCreateLabel ("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)
Global $Datum = @MDAY & "." & @MON & "." & @YEAR
Global $kurzDatum = @MON & "." & @YEAR
Global $Pfad = ("C:\Users\"&@UserName&"\Arbeits-Info")
Global $txtPfad = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten-"&$kurzDatum&".txt")
Global $ini = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten.ini")
Global $section = ("Arbeitszeiten")
If Not FileExists ($Pfad) Then DirCreate ($Pfad)
GUISetState()
Do
$msg = GUIGetMsg()
Select
Case $msg = $Start
FileWrite ($txtPfad, "####NEUER TAG#### - " & $Datum & @CRLF & "Arbeitszeiten von " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
If FileExists ($ini) Then FileDelete ($ini)
IniWrite ($ini, $section, "StartHH", @HOUR)
IniWrite ($ini, $section, "StartMM", @MIN)
IniWrite ($ini, $section, "StartSS", @SEC)
Case $msg = $PauseStart
FileWrite ($txtPfad, "Pause von " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
IniWrite ($ini, $section, "PauseStartHH", @HOUR)
IniWrite ($ini, $section, "PauseStartMM", @MIN)
IniWrite ($ini, $section, "PauseStartSS", @SEC)
Case $msg = $PauseEnde
FileWrite ($txtPfad, "Pause bis " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
IniWrite ($ini, $section, "PauseEndeHH", @HOUR)
IniWrite ($ini, $section, "PauseEndeMM", @MIN)
IniWrite ($ini, $section, "PauseEndeSS", @SEC)
Case $msg = $Stop
FileWrite ($txtPfad, "Arbeitszeit bis " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
IniWrite ($ini, $section, "BeendetHH", @HOUR)
IniWrite ($ini, $section, "BeendetMM", @MIN)
IniWrite ($ini, $section, "BeendetSS", @SEC)
_GesamtPause ()
_Gesamt ()
FileWrite ($txtPfad, "PauseGesamt " & $PauseHH & ":" & $PauseMM & ":" & $PauseSS & @CRLF)
FileWrite ($txtPfad, "Arbeitszeit " & $GesamtHH & ":" & $GesamtMM & ":" & $GesamtSS & @CRLF)
FileWrite ($txtPfad, "=================================" & @CRLF)
EndSelect
Until $msg = -3 or $msg = $Ende
Func _Gesamt ()
Global $GesamtHH1 = IniRead ($ini, $section, "BeendetHH", @HOUR) - IniRead ($ini, $section, "StartHH", @HOUR)
Global $GesamtMM1 = IniRead ($ini, $section, "BeendetMM", @MIN) - IniRead ($ini, $section, "StartMM", @MIN)
Global $GesamtSS1 = IniRead ($ini, $section, "BeendetSS", @SEC) - IniRead ($ini, $section, "StartSS", @SEC)
Global $GesamtHH = $GesamtHH1 - $PauseHH
Global $GesamtMM = $GesamtMM1 - $PauseMM
Global $GesamtSS = $GesamtSS1 - $PauseSS
EndFunc
Func _GesamtPause ()
Global $PauseHH = IniRead ($ini, $section, "PauseEndeHH", @HOUR) - IniRead ($ini, $section, "PauseStartHH", @HOUR)
Global $PauseMM = IniRead ($ini, $section, "PauseEndeMM", @MIN) - IniRead ($ini, $section, "PauseStartMM", @MIN)
Global $PauseSS = IniRead ($ini, $section, "PauseEndeSS", @SEC) - IniRead ($ini, $section, "PauseStartSS", @SEC)
EndFunc
Exit][/autoit]
===============================================================================
Und hier dann noch mal die "alte", aber auch auskommentierte Version:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.8.1
Autor: Domenick L.
Kontakt: [email='dnick92@web.de'][/email]
Script Funktion:
Dokumentiert ihre Arbeitzeiten samt Pausen übersichtlich in einer Text-Datei.
Es werden hierbei nur Die Start- und Endzeiten dokumentiert!
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#include <Process.au3> ; erlaubt das Benutzen von _RunDos
#include <GUIConstantsEx.au3> ; erlaubt das Benutzen von $GUI_EVENT_CLOSE
GUICreate("Arbeitszeiten", 300, 190) ; erstellt das Fenster mit Name und Größe
[/autoit] [autoit][/autoit] [autoit]$Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35) ; erstellt die einzelnen Knöpfe mit Namen und Größen samt Eingabe-Funktionen
$Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
$Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
$PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
$PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)
GUICtrlCreateLabel ("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10) ; erstellt den Angezeigten Text an den vorgegebenen Positionen
GUICtrlCreateLabel ("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
GUICtrlCreateLabel ("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
GUICtrlCreateLabel ("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
GUICtrlCreateLabel ("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)
_RunDos ("md C:\Users\%USERNAME%\Arbeits-Info") ; erstellt den Ordner C:\Users\%USERNAME%\Arbeits-Info, wobei %USERNAME% für die Variable des Benutzernamens steht, damit jeder dieses Programm nutzen kann.
[/autoit] [autoit][/autoit] [autoit]GUISetState() ; macht das Fenster sichtbar
[/autoit] [autoit][/autoit] [autoit]Do
$msg = GUIGetMsg() ; wartet auf Eingabe
Select ; unterscheidet zwischen den verschiedenen Eingabe-Signalen der verschiedenen Knöpfe
Case $msg = $Start ; drückt man den Knopf mit der Bezeichnung "Start", führt das Programm folgende Befehle aus:
_RunDos ("echo ####NEUER TAG#### - %DATE% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Kopfzeile & Datum werden in die Text-Datei geschrieben
_RunDos ("echo Arbeiszeit von %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Arbeitszeitbeginn wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
Case $msg = $PauseStart ; drückt man den Knopf mit der Bezeichnung "PauseStart", führt das Programm folgende Befehle aus:
_RunDos ("echo Pause von %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Pausenbeginn wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
Case $msg = $PauseEnde ; drückt man den Knopf mit der Bezeichnung "PauseEnde", führt das Programm folgende Befehle aus:
_RunDos ("echo Pause bis %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Pausenende wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
Case $msg = $Stop ; drückt man den Knopf mit der Bezeichnung "Stop", führt das Programm folgende Befehle aus:
_RunDos ("echo Arbeitszeit bis %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Arbeitszeitende wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
_RunDos ("echo ================================ >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; ein Zeichen zur leichteren Unterscheidung der einzelnen Tage wird als Schluss in die Text-Datei geschrieben
EndSelect ;
Until $msg = $GUI_EVENT_CLOSE or $msg = $Ende ; lässt das Programm diese Aktion so lange wiederholen, bis man auf "Ende" oder "X" klickt
Exit ; schließt das Programm/Script
[/autoit]