1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BinDannMalWeg

Beiträge von BinDannMalWeg

  • Daten überprüfen

    • BinDannMalWeg
    • 15. November 2012 um 17:22

    Bitte was soll denn da sein? :huh: Warum schreibst du den Rückgabe-Wert von ConsoleWrite() in eine Datei? 8| Da kann ja nichts anderes in der Datei stehen, als die Zahlen... Wenn dann musst du die Variable $sPath in die Datei schreiben. ;)
    Edit:
    Sooo ich hatte jetzt mal Zeit um das Script umzubauen und zu testen... So funktioniert es bei mir einwandfrei:

    Spoiler anzeigen
    [autoit]

    #include <Crypt.au3>
    Global $sVirusList, $aDriveList

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

    ; MD5-Liste laden
    $sVirusList = @CRLF & StringReplace(FileRead(@ScriptDir & "\list.txt"), @LF, @CRLF) & @CRLF

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

    ; Laufwerke durchgehen
    $aDriveList = DriveGetDrive("ALL")
    If @error Then Exit
    _Crypt_Startup()
    For $i = 1 To $aDriveList[0]
    ConsoleWrite("Beginne Laufwerk " & $aDriveList[$i] & " zu scannen..." & @LF)
    _Search($aDriveList[$i])
    Next
    _Crypt_Shutdown()

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

    Func _Search($sStartPath)
    If StringRight($sStartPath, 1) <> "\" Then $sStartPath &= "\"
    If Not FileExists($sStartPath) Then Return -1
    Local $hSearch = FileFindFirstFile($sStartPath & "*")
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then ; keine Dateien mehr
    ExitLoop
    ElseIf @extended Then ; ordner
    _Search($sStartPath & $sFile & "\")
    Else ;datei
    _ScanFile($sStartPath & $sFile)
    EndIf
    WEnd
    EndFunc ;==>_Search

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

    Func _ScanFile($sPath)
    If FileGetSize($sPath) < 3000000 Then
    ConsoleWrite("Scaning: " & $sPath & @LF)
    Local $Hash = StringTrimLeft(_Crypt_HashFile($sPath, $CALG_MD5), 2)
    If $Hash = -1 Then Return 0
    If StringRegExp($sVirusList, "\s" & $Hash & "\s", 0) Then
    ConsoleWrite("Lösche: " & $sPath & @LF)
    FileSetAttrib($sPath, "-rsh")
    FileDelete($sPath)
    Else
    ConsoleWrite("Okay" & @LF)
    EndIf
    EndIf
    EndFunc ;==>_ScanFile

    [/autoit]

    Zum Testen habe ich MD5-Hashe mit folgendem Scirpt erstellt:

    Spoiler anzeigen
    [autoit]

    #include <Crypt.au3>
    _Crypt_Startup()
    ClipPut(StringTrimLeft(_Crypt_HashFile(FileOpenDialog("HashGenerator",@ScriptDir,"All Files (*.*)"),$CALG_MD5),2))
    MsgBox(64,"","Okay")
    _Crypt_Shutdown()

    [/autoit]
  • Backupscript

    • BinDannMalWeg
    • 14. November 2012 um 23:44
    Zitat von Nici96

    Ich habe mir heute Morgen vorgenommen, ein Backupscript mithilfe vom Cmdbefehl xcopy mit AutoIT zu schreiben, was den Vorteil hat, dass nur neue/geänderte Daten kopiert werden.

    Wieso willst du den Umweg über den Konsolen-Befehl denn überhaupt gehen? Ich hab mal schnell eine "Quick and Dirty" Version mit Autoit geschrieben:

    Spoiler anzeigen
    [autoit]

    #include <Crypt.au3>
    _xCopy(@ScriptDir, @ScriptDir & "\backup\")
    ; neue Dateien werden kopiert
    ; veränderte Dateien werden ersetzt/erneuert

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

    Func _xCopy($sSourceDir, $sDestinationDir, $sMotherDir = -1) ; Bitte den letzten Parameter nicht setzen!
    If StringRight($sSourceDir, 1) <> "\" Then $sSourceDir &= "\"
    If StringRight($sDestinationDir, 1) <> "\" Then $sDestinationDir &= "\"
    If Not FileExists($sSourceDir) Then Return -1
    If Not FileExists($sDestinationDir) Then DirCreate($sDestinationDir)
    If $sSourceDir = $sDestinationDir Then Return -2
    If $sMotherDir = -1 Then $sMotherDir = StringLen($sSourceDir)
    Local $hSearch = FileFindFirstFile($sSourceDir & "*"), $sNewPath, $sMD5
    While 1 ; by Christoph54 (http://www.autoit.de)
    $sFile = FileFindNextFile($hSearch)
    If @error Then
    ExitLoop
    ElseIf @extended Then
    $sNewPath = $sDestinationDir & StringTrimLeft($sSourceDir & $sFile & "\", $sMotherDir)
    If Not FileExists($sNewPath) Then DirCreate($sNewPath)
    _xCopy($sSourceDir & $sFile & "\", $sDestinationDir, $sMotherDir)
    Else
    $sNewPath = $sDestinationDir & StringTrimLeft($sSourceDir, $sMotherDir)
    If Not FileExists($sNewPath & $sFile) Then
    FileCopy($sSourceDir & $sFile, $sNewPath & $sFile)
    ConsoleWrite("Kopiert" & @TAB & $sSourceDir & $sFile & @LF)
    Else
    If _Crypt_HashFile($sSourceDir & $sFile, $CALG_MD5) <> _Crypt_HashFile($sNewPath & $sFile, $CALG_MD5) Then
    FileCopy($sSourceDir & $sFile, $sNewPath & $sFile, 1)
    ConsoleWrite("Ersetzt" & @TAB & $sSourceDir & $sFile & @LF & @TAB & $sNewPath & $sFile & @LF)
    EndIf
    EndIf
    EndIf
    WEnd
    EndFunc ;==>_xCopy

    [/autoit]
  • Daten überprüfen

    • BinDannMalWeg
    • 14. November 2012 um 22:59

    Kann es sein, dass dieses mysteriöse Hash-Plugin nicht den Dateiinhalt sondern einen Pfad erwartet? Dann musst Zeile 33 nämlich so aussehen:

    [autoit]

    Local $Hash = MD5Hash($sPath, 1, True)

    [/autoit]

    Ach ja bitte benutze ab sofort Spoiler in deinen Posts...

  • Daten überprüfen

    • BinDannMalWeg
    • 14. November 2012 um 22:50

    Siehe meine Verbesserung... ;)
    Ach ja und ich habe an deinem Script noch etwas entscheidendes verändert: Jetzt wird ein Hash vom Dateiinhalt und nicht mehr von Pfad erstellt... ;)

  • Daten überprüfen

    • BinDannMalWeg
    • 14. November 2012 um 22:40
    Zitat von TheBeatMaker111

    Er ließt doch am Anfang mit "FileRead" die Gesamte Datei aus oder nicht?

    Und was macht er damit? Er überprüft ob der Datei-MD5 Hash der ganzen Datei entspricht, was logischer Weise nur war wird, wenn in der Datei nur ein einziger Hash steht... ^^ ich hab mal schnell ein Script geschrieben:

    Spoiler anzeigen
    [autoit]

    Global $sVirusList, $aDriveList, $MD5Plugin = PluginOpen(@ScriptDir & "\MD5Hash.dll")

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

    ; MD5-Liste laden
    $sVirusList = @CRLF & StringReplace(FileRead(@ScriptDir & "\V.txt"), @LF, @CRLF) & @CRLF

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

    ; Laufwerke durchgehen
    $aDriveList = DriveGetDrive("ALL")
    If @error Then Exit
    For $i = 1 To $aDriveList[0]
    ConsoleWrite("Beginne Laufwerk " & $aDriveList[$i] & " zu scannen..." & @LF)
    _Search($aDriveList[$i])
    Next

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

    Func _Search($sStartPath)
    If StringRight($sStartPath, 1) <> "\" Then $sStartPath &= "\"
    If Not FileExists($sStartPath) Then Return -1
    Local $hSearch = FileFindFirstFile($sStartPath & "*")
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then ; keine Dateien mehr
    ExitLoop
    ElseIf @extended Then ; ordner
    _Search($sStartPath & $sFile & "\")
    Else ;datei
    _ScanFile($sStartPath & $sFile)
    EndIf
    WEnd
    EndFunc ;==>_Search

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

    Func _ScanFile($sPath)
    If FileGetSize($sPath) < 3000000 Then
    ConsoleWrite("Scaning: " & $sPath & @LF)
    Local $Hash = MD5Hash(FileRead($sPath), 1, True)
    If $Hash = 0 Then Return -1
    If StringRegExp($sVirusList, "\s" & $Hash & "\s", 0) Then
    ConsoleWrite("Lösche: " & $sPath & @LF)
    FileSetAttrib($sPath, "-rsh")
    FileDelete($sPath)
    EndIf
    EndIf
    EndFunc ;==>_ScanFile

    [/autoit]

    Allerdings konnte ich es nicht testen, da ich das Plugin und die nötige Liste nicht besitze... ;) Aber du kannst ja mal probieren ob es funktioniert.
    Edit: Fehler verbessert... :whistling:

  • Daten überprüfen

    • BinDannMalWeg
    • 14. November 2012 um 22:13

    Er arbeitet ja auch gar nicht mit den verschiedenen Zeilen! Außerdem gibt es genug schlechte Antiviren-Programme... ;)

  • GDIPlus | Transparenz ermitteln

    • BinDannMalWeg
    • 12. November 2012 um 17:33

    42

    Spoiler anzeigen

    Nur Spaß ^^ Aber nöchstes mal vorher Google fragen. das hier sollte sein was du suchst...

  • Ping funktion zum scannen ob PC On oder Offline ?

    • BinDannMalWeg
    • 12. November 2012 um 14:59

    In etwa so:

    Spoiler anzeigen
    [autoit]

    _PingAll()

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

    Func _PingAll()
    Local $name, $PC[28]
    DirRemove(@TempDir&'\ping\')
    DirCreate(@TempDir&'\ping\')
    For $i = 1 To 28
    $name = 'PC'
    If $i < 10 Then $name &= '0'
    $name &= $i
    $PC[$i-1] = $name
    $PID = Run(@ComSpec&' /c ping '&$name&' > '&@TempDir&'\ping\'&$name,@TempDir,@SW_HIDE)
    Next
    Do
    Sleep(50)
    Until Not ProcessExists('cmd.exe')
    For $i = 1 To 28
    If StringLeft(FileRead(@TempDir&'\ping\'&$PC[$i-1]),16) <> 'Ping-Anforderung' Then
    ; ...
    ConsoleWrite($PC[$i-1] & @LF)
    ; ...
    EndIf
    Next
    DirRemove(@TempDir&'\ping\')
    EndFunc

    [/autoit]

    Jaa ich weis da fehlen noch Fehlerabfragen... ^^

  • Opera Erweiterungen

    • BinDannMalWeg
    • 12. November 2012 um 14:32

    Ich benutze Opera nicht und kann daher nichts testen, allerdings könnte man wenn wirklich gar nichts mehr hilft den "Hinweis" aus der Speicher lesen... Andernfalls gibt es ja auch noch schöne Dinge wie ControlClick() ImageSearch usw. ;)

  • Frage

    • BinDannMalWeg
    • 10. November 2012 um 13:37

    Ich würde ungefähr so vorgehen: Du wartest bis auf eines der Bilder geklickt wird (Also bis ein Mouse-Down stattfindet), dann gehst du in eine spezielle Funktion, die das Bild ständig neu Positioniert und zwar anhand der aktuellen Mauskoordinaten. Wenn nun die Taste der Maus losgelassen wird (Also Mouse-Up) verläst du die Schleife die das Bild ständig neu positioniert und errechnest aus den aktuellen Koordinaten, ob es weit genug nach links/rechts bewegt wurde um es zu verschieben. Wenn Ja dann bewegst du das Bild das gerade auf der Position ist (eigentlich alle die zwischen der alten Postion des verschobenen Bildes und der neuen liegen) eins nach recht/links.und schiebst das Verschobene auf seine neue Position. Wenn Nein verschiebst du das Bild einfach wieder an seine alte Position...

  • MountFolders - Ordner automatisch als Laufwerk einbinden lassen

    • BinDannMalWeg
    • 10. November 2012 um 12:57
    Zitat von BugFix

    Ist schon seit knapp 4 Jahren bei den Skripten gepostet: Virtuelles Laufwerk

    Ohh :D Naja egal... ^^

  • hilfe bei der fehlersuche! programm beendet sich ohne fehlermeldung, log ist auf einmal weg.

    • BinDannMalWeg
    • 9. November 2012 um 22:58

    Warum löschst du es denn, gleich nachdem du etwas hinein geschrieben hast? :huh: (Mit so einem Mini-Schnippselchen kann man dir wirklich fast nicht helfen, aber Passwörter usw. kann man ja auch löschen/ersetzen?)

  • hilfe bei der fehlersuche! programm beendet sich ohne fehlermeldung, log ist auf einmal weg.

    • BinDannMalWeg
    • 9. November 2012 um 22:41
    Zitat von WhiteLion

    hmmmm, ich glaube du hast mein anliegen nicht verstanden/gelesen. mein script nicht nicht weg, sondern nur das fehlerprotrokoll was es schreibt.

    Achsoo ^^ Und wieso zeigst du uns dann nicht mal dein Script??? Denn sonst muss ich dich ernsthaft fragen ob du das Logfile vielleicht mit FileDelete() löschst... ;)

  • hilfe bei der fehlersuche! programm beendet sich ohne fehlermeldung, log ist auf einmal weg.

    • BinDannMalWeg
    • 9. November 2012 um 22:36

    So kurrios es auch klingt, mir ist das auch schon mal passiert! ^^
    Aber zum Glück hatte ich ja ein Backup von meinem durchaus wichtigen Scipt... not :whistling:

  • MountFolders - Ordner automatisch als Laufwerk einbinden lassen

    • BinDannMalWeg
    • 9. November 2012 um 22:15

    Hier ein kleines Script das ich benutze um bei einem Neustart einige Ordner zu 'mounten', also als eigenes Laufwerk zu registrieren. Alle nötigen Einstellungen können in der beiliegenden Datei "drives.cfg" vorgenommen werden.

    Spoiler anzeigen

    Hier mal das Script:

    [autoit]

    #include <Process.au3>
    #include <Array.au3>
    Local $ConfigFile = @ScriptDir & '\drives.cfg', $Data
    If Not FileExists($ConfigFile) Then Exit
    $Data = FileRead($ConfigFile)
    $Data = StringRegExpReplace($Data, '#.*\s', '')
    $com = StringRegExp($Data, '(?i)([a-z]\:)\\?\>([a-z]\:.*?)\s', 3)
    If IsArray($com) And Mod(UBound($com), 2) = 0 Then
    For $i = 0 To UBound($com) - 2 Step +2
    If FileExists($com[$i + 1]) Then
    _RunDos('subst ' & $com[$i] & ' ' & StringRegExpReplace($com[$i + 1], '\\\z', ''))
    TrayTip('', 'Das Laufwerk ' & $com[$i] & '\ wurde gemountet...', 5)
    EndIf
    Next
    EndIf
    Sleep(5000)
    Exit

    [/autoit]

    Vielleicht kann es ja mal jemand brauchen... ^^

    Dateien

    MountFolders.zip 848 Byte – 362 Downloads
  • Vocci Trainer

    • BinDannMalWeg
    • 7. November 2012 um 21:32

    Oder du benutzt das von Excel unterstützte .csv Format... Hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Global $Vokabeln = _GetList(@ScriptDir & '\vokabeln.csv')
    If Not IsArray($Vokabeln) Then Exit

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

    _ArrayDisplay($Vokabeln)

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

    Func _GetList($File)
    If Not FileExists($File) Then Return -1
    Local $temp = StringRegExp(FileRead($File), '(?i)(.+);(.+);(.+);(.+)\s', 3)
    If Not IsArray($temp) Then Return -2
    Local $Return[UBound($temp) / 4 + 1][4], $c = 0
    $Return[0][0] = UBound($temp) / 4
    For $i = 1 To $Return[0][0]
    $Return[$i][0] = $temp[$c]
    $Return[$i][1] = $temp[$c + 1]
    $Return[$i][2] = $temp[$c + 2]
    $Return[$i][3] = $temp[$c + 3]
    $c += 4
    Next
    Return $Return
    EndFunc ;==>_GetList

    [/autoit]

    Edit: Falsch/Richtig Spalten ergänzt... :whistling:

    Dateien

    vokabeln.zip 227 Byte – 199 Downloads
  • Putlocker Downloader

    • BinDannMalWeg
    • 7. November 2012 um 20:11
    Zitat von AGB Putlocker

    (...) not: (...) (h) use any robot, spider, site search/retrieval application, or other manual or automatic device or process to retrieve, index, "data mine," or in any way reproduce or circumvent the navigational structure or presentation of the Site, Services or related content; (...)

    Sollte sich wohl erledigt haben... ;)

  • Problem mit _ScreenCapture_Capture und Tooltip

    • BinDannMalWeg
    • 5. November 2012 um 15:51

    Für dein eigentliches Problem habe ich zwar keine Lösung parat, aber man könnte die Restzeit ja auch mit GDI+ auf das Bild schreiben?

  • ShellExecute: Parameter wie z.B. "-windowed"

    • BinDannMalWeg
    • 5. November 2012 um 15:49
    Zitat von mchope57

    Das Programm unterstützt den Parameter, da bin ich mir ganz sicher..

    Dann versuch es mal so:

    [autoit]

    Run("C:\Program.exe -windowed")

    [/autoit]

    Falls es so auch nicht funktioniert stimmt deine Annahme, das der Parameter in der Form existiert, einfach nicht... ;)

  • iUser - Wenn du den Benutzer kontrollieren willst

    • BinDannMalWeg
    • 1. November 2012 um 22:22

    Jetzt rate mal wofür "CMD" steht?

    Zitat

    (...) Net-Commandline Befehle kennen wahrscheinlich (...)

    ^^

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™