Naja, ich kenne niemanden der den PC mit gedrückter Shift-Taste herunter fährt .
Ggf. wird halt per Default der Fastboot deaktiviert, wenn das immer gewünscht ist den PC "richtig" herunterzufahren anstatt jedesmal irgendeine Taste drücken zu müssen wenn man Herunterfahren anklickt.
Beiträge von Moombas
-
-
Hmm, aber eigentlich gehören die Spaltenüberschriften ja nach oben.
Das Wollte ich eigentlich mit der Angabe der 0 in ArrayInsert erreichen, sehe aber Gerade das ich lt. Doku einen Fehler gemacht habe ("$vRange can be a string containing the rows above which a row is to to be inserted. ").
Ersetze die 0 mal mit einer 1 und teste erneut. -
Hab das ja oben als 2. Part hinzugefügt als weitere Möglichkeit.
Hier mal zusammengefasst (ohne Gewähr):
AutoIt
Alles anzeigen#include <Array.au3> Global $oConnection, $aRecordSet, $sQuery, $aRecordSetArr, $Spalten Global $sTableName = "tblTable1" Global $sDatabaseName = "D:\Test-mdb\Test.mdb" If Not FileExists($sDatabaseName) Then Exit $oConnection = ObjCreate("ADODB.Connection") $oConnection.Open("Driver=Microsoft Access Driver (*.mdb); DBQ=" & $sDatabaseName) $oRecordSet = ObjCreate("ADODB.RecordSet") $sQuery = "Select * From " & $sTableName $oRecordSet.Open($sQuery, $oConnection) For $i = 0 to $oRecordSet.Fields.Count - 1 $Spalten &= $oRecordSet.Fields.Item($i).Name & '|' Next $Spalten = StringTrimRight($Spalten, 1) $aRecordSetArr = $oRecordSet.GetRows _ArrayAdd($aRecordSetArr, $Spalten, 0) $oRecordSet.Close() $oConnection.Close() _ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName)
-
Bzw. $Spalten kannst du in Zeile 11-13 halt wie gezeigt zusammen bauen und dann entsprehend einfügen (entweder für das Arraydisplay oder als extra Zeile im Array).
-
Wenn es nur im ArrayDisplay angezeigt werden soll, ersetze Spalte 17 & 18 (ungetestet):
AutoIt$Spalten = '' For $Row = 0 to Ubound($aColumnArr) $Spalten &= $aColumnArr[$Row] & '|' Next $Spalten = StringTrimRight($Spalten, 1) _ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName, Default, Default, Default, $Spalten)
Edit:
Willst du Die Überschriften direkt auch im Array haben:
AutoIt$Spalten = '' For $Row = 0 to Ubound($aColumnArr) $Spalten &= $aColumnArr[$Row] & '|' Next $Spalten = StringTrimRight($Spalten, 1) _ArrayAdd($aRecordSetArr, $Spalten, 0) _ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName)
Aber alles ungeprüft.
-
hipfzwirgel : Siehe Hilfe:
[ 2] - Date at which this entry was submitted
[ 3] - Time at which this entry was submitted
[ 4] - Date at which this entry was received to be written to the log
[ 5] - Time at which this entry was received to be written to the logNaja selbst wenn nciht zur Erfassung, brauchst du dennoch ja die richtigen und logisch richtig nachvollziehbaren Werte
Und dafür sind die genannten Eckpunkte wichtig und richtig zu erfassen und wären auch für Arbeitszeiterfassung möglich (ob zulässig weiß ich jedoch nicht^^). -
Warum sollte man beim herunterfahren die Shift-Taste gedrückt halten? -.-
-
Ich möchte noch eine Sache zu bedenken geben aber wneiger wegen des Auslesens an sich, sondern der Anwendung dessen.
Das Skript würde dies auch auslesen und anwenden, wenn dein PC wegen anderen Gründen heruntergefahren und später wieder gestartet wird. Obwohl die Zeit dazwischen ggf. Arbeitszeit war.
Das erfordert dann eine manuelle Anpassung der Zeiten. Ich bin daher kritisch dem gegenüber genau dieses las Grundlage für die Arbeitszeiten zu nehmen.Wäre es nicht Sinnvoller den Sleepmode zu nehmen und diesen zu Plotten?
- Laptop hochfahren: Arbeitszeit Start (egal ob Homeoffice oder Office)
- Sleepmode Start = Ende Homeoffice = Unterbrechung der Arbeitszeit start
- Sleepmode Ende = Unterbrechung der Arbeitszeit Ende
- Laptop herunter fahren = Arbeitszeit Ende (egal ob Homeoffice oder Office)
- Spätestes Ende = Laptop hochfahren + 10h + Dauer Unterbrechung (korrigiere mich, wenn ich da nun rechtlich falsch bin oder was vergessen habe)Empfehlung: Prüfung, ob die maximal Erlaubte Wochenarbeitszeit (50h bei 5-Tage-Woche/60h bei 6-Tage-Woche) damit nicht überschritten wird, sonst muss vorher Feierabend gemacht werden.
Empfehlung 2: Prüfung ob die Ruhepause (Arbeits Ende bis Arbeits Start) von 11h eingehalten wurde. -
Alina Wir reden hier von 7 Minuten Versatz, das wird wohl kein Zeitzonenproblem sein
hipfzwirgel : Wenn du den jeweiligen Eintrag kennst: _EventLog__Read()
Menno AspirinJunkie war schneller
-
Woher diese Differenz kommt weiß ich nicht, aber alternativ drüber nachgedacht beim Shutdown einen Eintrag (Registry/Datei o.ä.) zu machen mit der entsprechenden Zeit und diesen dann auszulesen
-
Möp, jetzt weiß ich warum ich das nicht nachvollziehen konnte.
Ich hatte die vorhandene da_block.png erweitert und getestet.
Den Ordner "da_block" gab es daher schon (ebenso die entsprechende Datei) und daher auch keine Probleme.Ja, schon blöd und du hast recht
Man sollte die Testumgebung halt frei von solchen Möglichkeiten halten. -
Ich hab das schon verstanden, die Datei ist ja nur Quelle als Namensgeber, mehr nicht.
Beispiel:
Dateiname: da_block.png.test
Resultierender Ordnername: da_block.pngDas kann ich nicht nachvollziehen mit meinem Skript (dort ist die Prüfung ja drin ob der entsprechende Ordner bereits existiert).
Wenn ich jedoch, wie von dir angegeben, "$FC_CREATEPATH" in Filemove verwende (und das dircreate auskommentiere), wird kein Ordner erstellt.> Slashes richtig rum gedreht und geht, war mein Fehler, nachvollziehen kann ich deine obige Aussage jedoch nicht. -
Das würde auch ein weiteres Randphänomen in deinem Skript mit beseitigen:
Erstelle mal einen Ordner (keine Datei) mit dem Namen Mein.Ordner und schau was mit der DirCreate-Zeile daraus gemacht wird.Also als ich das mit einer Datei als basis mit 2 Punkten im Namen gestestet (da_block.png.test) habe (der Ordnername hat dann zwangsläufig auch einen: da_block.png), lief das Einwandfrei.
Was macht es denn deiner Meinung nach (lerne gerne wieder was dazu ;))? -
Und bei meinenm Beispiel Code war die Prüfung ob ein Ordner existiert bereits drin (sonst wird eben keiner erstellet, nur verschoben; Zeile 21).
Aber das man vor dem . ein Leerzeichen haben könnte habe ich in der Tat nicht bedacht...auf so eine Idee würde ich nie kommenDanke an die Anderen, dass sie sich dessen angenommen haben
-
Hast du recht an den Parameter occurance hatte ich nicht gedacht XD, habs korrigiert.
Brauche das aber auch zu selten -
Hab es mal angepasst
Bleibt noch die Möglichkeit, wenn Punkte im Dateinamen verwendet wurden (z.B. test.txt.old)
Das habe ich dann hier mal mit berücksichtigt:
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #include <MsgBoxConstants.au3> CreateStructure() Func CreateStructure() Local $sFileName = "", $iResult = 0, $target Local Const $hSearch = FileFindFirstFile("*.*") If $hSearch = -1 Then MsgBox($MB_SYSTEMMODAL, "", "Error: No files/directories matched the search pattern.") Return False EndIf While 1 $sFileName = FileFindNextFile($hSearch) If @error Then ExitLoop If ($sFileName <> @ScriptName) then $target = @ScriptDir & '\' & StringLeft($sFileName, StringinStr($sFileName, '.', Default, -1) - 1) & '\' If not FileExists($target) then DirCreate($target) FileMove(@ScriptDir & '\' & $sFileName, $target & $sFileName) EndIf WEnd FileClose($hSearch) EndFunc
Edit: Corrected the slashes into correct direction.
-
Wie gesagt QuD
-
So habe ich es verstanden, daher hier eine quick and dirty Lösung:
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #include <MsgBoxConstants.au3> CreateStructure() Func CreateStructure() Local $sFileName = "", $iResult = 0, $target Local Const $hSearch = FileFindFirstFile("*.*") If $hSearch = -1 Then MsgBox($MB_SYSTEMMODAL, "", "Error: No files/directories matched the search pattern.") Return False EndIf While 1 $sFileName = FileFindNextFile($hSearch) If @error Then ExitLoop If ($sFileName <> @ScriptName) then $target = @ScriptDir & '/' & StringLeft($sFileName, StringinStr($sFileName, '.') - 1) & '/' If not FileExists($target) then DirCreate($target) FileMove(@ScriptDir & '/' & $sFileName, $target & $sFileName) EndIf WEnd FileClose($hSearch) EndFunc
Edit: Jetzt mit flexibler Dateiendung und nicht mehr ganz so QuD
-
Also 1 Ordner je Datei, wobei der Ordnername dem Dateinamen entspricht (ohne Endung). Richtig?
(Nein, ich werde den Sinn dahinter jetzt erst mal nicht hinterfragen)
-
Bin ich jetzt deppert? Genau das macht mein Vorchlag doch schon -.-
Allerdings habe ich beachtet das in der ersten Zeile das falsch herum steht, wie du es angegeben hast (<Value1 Key1>) und nicht was man erwarten würde (<Key1 Value>) und natürlich das mit dem Filereadtoarray noch nicht eingebaut. Unten mal der angepasste code
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #include <array.au3> #include <StringConstants.au3> GLobal Const $aSource = FilereadtoArray('DeineDatei.txt') Global $Source, $FinalArray For $Row = 1 to $aSource[1] $Source &= $aSource[$Row] Next $FinalArray = ValueStringsToArray($Source) _ArrayDisplay($FinalArray) Func ValueStringsToArray($String) Local Const $regex = '\<(.*?)\>' Local $result = StringRegExp($String, $regex, $STR_REGEXPARRAYGLOBALMATCH) _ArrayColInsert($result, 1) For $Row = 0 to Ubound($result, $UBOUND_ROWS) - 1 $result[$Row][0] = StringSplit($result[$Row][0], ' ')[1] ;Nachtrag: Sollte doch erst Key und dann Value stehen! $result[$Row][1] = StringSplit($result[$Row][0], ' ')[2] Next Return $result EndFunc