Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Log Dateien automatisch auswerten



  • Please log in to reply
38 replies to this topic
CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

@ just me,

 

ok, dann poste ich hier mal was ich habe. Außerdem habe ich mir erlaubt die Namen der Variablen in einen für mich erkennbaren Namen zu ändern. Sicher mag es für die Performance und die Übersicht besser sein, hier kurze Namen zu vergeben, allerdings muss ich in einem Jahr noch erkennen können, welcher Teil und welche Variable für welche Aktion zuständig war. Kryptische Abkürzungen sind da wenig hilfreich für mich, dies soll natürlich keine Kritik sein ;-)

Daher poste ich hier nun mal das gesamte Script, damit erkennbar ist, welchem Zweck es dient...

Spoiler


just me
  • Members
  • 1496 posts
  • Last active: Nov 03 2015 04:32 PM
  • Joined: 28 May 2011

Hallo CodeNewbee,
 
Du hast zumindest zwei böse Fehler drin:

if (FileExist("%Pruefdatei_001%")) ; kontrollieren ob Pfad oder Datei existiert, evtl. dummyfile erstellen
; und
if (FileExist("Pruefdatei_002")) ; kontrollieren ob Pfad oder Datei existiert, evtl. dummyfile erstellen

FileExist() ist eine Funktion, und Funktionen erwarten als Parameter Ausdrücke (Expressions). Pruefdatei_001 und Pruefdatei_002 sind Variablen, und der Inhalt von Variablen wird in Ausdrücken einfach nur über den Variablennamen übergeben, d.h. der Name darf weder in "-Zeichen (dann wird der Name als Zeichenfolge übergeben) noch in %-Zeichen (dann wird geprüft, ob der Inhalt der Variablen ein Variablenname ist und ggf. der Inhalt dieser Variablen übergeben) eingeschlossen werden.

 

Außerdem sehe ich keinen Grund, die Auswertung je Laufwerk mehrfach zu kodieren. Der einzige Unterschied ist das Ziellaufwerk in

RunWait, "%ProgPfad%" "%Spiegelung_USB%" -leftdir "%Quelle_D%" -rightdir "%Ziel_R%",,

Wenn Du statt der laufwerksbezogenen Variablen eine neutrale Variable verwendest und diese mit dem Wert der laufwerksbezogenen versorgst, wenn das Laufwerk vorhanden ist, kannst Du die den doppelten Code sparen:

loop   ; Die Schleifenanweisung wird staendig wiederholt, Quelle= http://www.autohotkey.com/board/topic/71642-help-with-loop-for-scanning-folders-to-check-if-files-exist/
{

   Ziel := ""                         ; Zielverzeichnis auf Grundstellung setzen
   If FileExist(Pruefdatei_001)       ; wenn das Laufwerk P angeschlossen ist
      Ziel := Ziel_P                  ; ...  setze Ziel auf Ziel_P
   Else If FileExist(Pruefdatei_002)  ; sonst wenn das Laufwerk R angeschlossen ist
      Ziel := Ziel_R                  ; ...   ...  setze Ziel auf Ziel_R

; ---------- Pruefe ob ein USB Laufwerk angeschlossen ist -----------------------------
if (Ziel <> "")) ; kontrollieren ob die Variable Ziel versorgt ist
{
; --- Fuehre den Abgleich der Ordner durch - wie in den Pfadbezeichnungen der Variablen angegeben ---
RunWait, "%ProgPfad%" "%Spiegelung_USB%" -leftdir "%Quelle_D%" -rightdir "%Ziel%",,
; ---------------------------------------------------------------------------------------------------

Prefer ahkscript.org for the time being.


CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

Ich danke Dir für Deine Hilfe, ich muss das heute Nachmittag mal an dem betreffenden Rechner testen, aber so sieht das schon mal Super aus.
 

FileExist() ist eine Funktion, und Funktionen erwarten als Parameter Ausdrücke (Expressions)

Ja, da haben wir es wieder und ich dachte schon ich hatte es verstanden...  :-(

Die Namen der Variablen habe ich noch mal kürzer und knackiger gestaltet, als in meinem oberen Post bezeichnet (   Check_Logdat_11   und   Check_Logdat_All   )

Wenn ich das Ganze getestet habe, werde ich es hier noch einmal veröffentlichen.

Erst einmal vielen Dank für Deine tolle Arbeit.



CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013
Ja leider gibt es irgendwo einen Fehler in meinem Script.
Hat vielleicht Jemand eine Idee?
Spoiler

Und hier die Fehlermeldung:
Spoiler


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012
if (Ziel <> ""))  

Vieleicht findest du den Fehler ja selber.


Visit the new forum ahkscript.org.

http://ahkscript.org


CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

Na ja, dachte ich ja auch erst, und dann habe ich peinlich genau nach einer } zuviel gesucht. Aber es war tatsächlich so simpel:
if (Ziel <> ""))  stattdessen if (Ziel <> "")   - und halt "nur" eine ) zuviel...

Danke nnnik, so ist das manchmal mit dem Wald und den Bäumen...



CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

@ Just Me

Es ist nun nur noch notwendig die ersten 11 Zeilen auszuwerten, da Swith Mail nun auch multiple Anhänge unterstützt.
Somit ist auch der direkte Versand der Logfiles möglich.
Allerdings sehe ich bei Deinem Script nicht ganz durch, wie muss ich die Logfileauswertung anpassen?

Spoiler


just me
  • Members
  • 1496 posts
  • Last active: Nov 03 2015 04:32 PM
  • Joined: 28 May 2011

Guten Morgen,
 
wenn Du die Logfiles einzeln versenden willst, nimmst Du einfach alles raus, was mit Check_Logdat_All zu tun hat. Du musst dann allerdings die Namen der Logfiles sammeln, damit Du sie an die Mail anhängen kannst.
 
Wenn es zwei Dateien werden sollen (Auswertungs- und Sammeldatei), müssen die folgenden Anweisungen raus:

; Sammeldatei an Prüfdatei anhängen und leeren ==========================================================
Check_Logdat_All.Pos := 0 ; Dateizeiger der Sammeldatei auf den Dateianfang setzen
Check_Logdat_11.Write(Check_Logdat_All.Read()) ; Inhalt der Sammeldatei an die Prüfdatei anhängen
Check_Logdat_All.Length := 0 ; Länge der Sammeldatei auf 0 setzen

 
Übrigens, das sieht etwas merkwürdig aus:

Runwait, %SwithMailOrdner%SwithMail.exe /Silent /Attachment "%PfadzurLogdatei%%Check_Logdat_All%" /FromName "%E_Mail_von%" ...


Prefer ahkscript.org for the time being.


CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

Danke Just me, ich werde das dann mal so ändern und dann testen.
 

Übrigens, das sieht etwas merkwürdig aus: Runwait, %SwithMailOrdner%SwithMail.exe /Silent /Attachment "%PfadzurLogdatei%%Check_Logdat_All%" /FromName "%E_Mail_von%" ...

 

Ja, aber das funktionierte. Das Sammeln der Logdateien ist nicht notwendig, das kann SwithMail jetzt auch per Wildcard über:
/Attachment "Beispiel.txt"|"Noch_ein_Beispiel.txt"|"*.log"
Da Tim Bare diese Funktion freundlicherweise noch in seine Software eingebaut hat. Die Pfade müssen dann natürlich angepasst werden, aber hier geht es ja mal um das Prinzip. ;-)

Vielen Dank für Deine schnelle Hilfe...