Bitte was soll denn da sein?
Warum schreibst du den Rückgabe-Wert von ConsoleWrite() in eine Datei?
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
#include <Crypt.au3>
Global $sVirusList, $aDriveList
; MD5-Liste laden
$sVirusList = @CRLF & StringReplace(FileRead(@ScriptDir & "\list.txt"), @LF, @CRLF) & @CRLF
; 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()
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
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
Zum Testen habe ich MD5-Hashe mit folgendem Scirpt erstellt:
Spoiler anzeigen
#include <Crypt.au3>
_Crypt_Startup()
ClipPut(StringTrimLeft(_Crypt_HashFile(FileOpenDialog("HashGenerator",@ScriptDir,"All Files (*.*)"),$CALG_MD5),2))
MsgBox(64,"","Okay")
_Crypt_Shutdown()