Log-Datei von einem Script erstellen

  • Hallo liebe Community,

    Ich brauche wie eigentlich schon in der Überschrift zu lesen einen Befehl, der mir jede einzelne Zeile in eine .txt Datei schreibt.

    Bei Batch Dateien geht das ganz einfach:

    [cmd-Befehl] >>[Pfad der .txt-Datei] ; und schon schreibt die Batch Datei eine .txt-Datei, und erstellt sie auch noch falls nicht vorhanden.

    Genau so ein Befehl brauche ich auch für AutoIt Scripte.
    Genial wäre dann noch, wenn er mir auch eventuelle Fehler-Meldung da rein schreibt.

    Ich habe das hier:

    [autoit]


    Func logFile($inputStr)
    $file = FileOpen("log.txt", 1)

    [/autoit][autoit][/autoit][autoit]

    If $file = -1 Then
    _Exit()
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $inputStr = "[" & @MDAY & "." & @MON & ". " & @Hour & ":" & @Min & ":" & @SEC & "] " & $inputStr
    FileWriteLine($file, $inputStr)
    FileClose($file)
    EndFunc

    [/autoit]


    schon probiert, Funktioniert aber nicht so, wie ich das gerne hätte.

    Spoiler anzeigen

    %systemroot%\system32\reg.exe add hkey_local_machine\system\currentcontrolset\services\lanmanserver\parameters /v AutoShareServer /t REG_DWORD /d 0 /f >>c:\%COMPUTERNAME%-logfile.txt


    Wenn ich das hier von einer Batch Datei ausführen lasse, erstellt er mir die .txt-Datei und schreib rein ob es geklappt hat oder nicht.
    Genau das suche ich ^^

    Danke schon einmal für eure Hilfe
    PS.: Bitte nichts mit Variablen die ich für jede Zeile neu definieren muss. Das Script hat ca 300 Zeilen

    Einmal editiert, zuletzt von Gabbadome (24. August 2012 um 12:01)

  • Schau dir mal an:

    [autoit]

    _FileWriteLog

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Schau dir mal an:

    [autoit]

    _FileWriteLog

    [/autoit]

    Das hab ich mir grade auch schon angeguckt.
    Mir wird aber nicht klar, wie ich dann den Text der Zeilen - ohne 300 versch. Variablen - in das Logfile bekomme.

  • Eben das ich ja meine Frage gewesen ^^
    Wie ich ein Logfile ohne Variablen erstellen kann.
    Kann man nicht sonst auch einfach eine andere .au3-Datei erstellen, den Inhalt der Ursprungs Scripts damit auslesen lassen und in eine .txt-Datei schreiben?

    #Edit:

    [autoit]

    BlockInput (1)

    [/autoit][autoit][/autoit][autoit]

    $input=FileRead ("C:\Users\*\Desktop\Installationshelfer.au3")
    ShellExecute ("notepad.exe")
    WinWaitActive ("Unbenannt - Editor")
    WinActivate ("Unbenannt - Editor")
    Send ($input)
    WinClose ("Unbenannt - Editor")
    WinWaitActive ("Editor","&Speichern")
    ControlClick ("Editor","&Speichern","Button1")
    WinWaitActive ("Speichern unter","Textdateien (*.txt)")
    Send ("Log.txt")
    ControlClick ("Speichern unter","Textdateien (*.txt)","Button1")
    WinWaitClose ("Speichern unter","Textdateien (*.txt)")
    BlockInput (0)
    Exit

    [/autoit]

    Einmal editiert, zuletzt von Gabbadome (24. August 2012 um 12:25)

  • 8| Das mit dem Notepad ist doch nicht dein Ernst oder? Ich verstehe den Sinn hinter deinem Script noch nicht ganz aber das ist ja nichts anderes als das:

    [autoit]

    FileCopy("C:\Users\*\Desktop\Installationshelfer.au3", "C:\Users\*\Desktop\Log.txt")

    [/autoit]


    Das ist aber mehr ein Backup als ein Log... Und was ist ein "Logfile ohne Variablen"?

    Gruss Shadowigor

  • FileCopy("C:\Users\*\Desktop\Installationshelfer.au3", "C:\Users\*\Desktop\Log.txt")

    Gott bin ich blond :D
    Daran hab ich garnicht gedacht :rolleyes:
    Ich habe halt ein komplettes Installationssript geschrieben für mein Unternehmen in dem ich arbeiite, und da muss einfach ein Log-File dabei sein, damit man auch sehen kann was es getan hat und ob es erfolgreich umgesetzt wurde.
    Wenn man das Ding ca. 10 mal am Tag einsetzt, hat man keine Zeit mehr, alles per Hand zu überprüfen.
    Und wie gesagt mit Batch Dateien geht das Super, da man mir dann aber gesagt hat das AutoIt Scripte alles können was Batch-Scripte können und noch viel mehr, dachte ich mir dass das dann auch machbar wäre.

  • Und nochmal eine Log ohne Variablen ist komplett sinnlos.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Also entweder habe ich es überlesen, oder es hat wirklich noch keiner vorgeschlagen FileWrite() zu nutzen... :huh:
    Hier mal ein kleines Beispiel:

    Spoiler anzeigen
    [autoit]

    Run('C:\installer.exe -silent', @ProgramFilesDir, @SW_HIDE)
    If @error Then _Log('Beim Ausführen von "C:\installer.exe -silent" ist ein unerwarteter Fehler aufgetreten!')
    ; ...
    Func _Log($Text)
    FileWrite(@ScriptDir & '\Log.txt', $Text & @CRLF)
    EndFunc ;==>_Log

    [/autoit]

    LG
    Christoph :)

  • Doch hat man schon in der SB was er aber nicht wollte weil er Variablen dann braucht.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Mit Variablen wäre wesentlich Sinnvoller, das weiß ich.
    Mein Problem is nur, dass ich das ganze dann mit Variablen für mehr als 300 Zeilen schreiben müsste und darauf habe ich definitiv keine lust ^^
    Danke aber für die guten Vorschläge