Batch-Tool zur Rettung von .chk-Dateien
Verfasst: 27.05.2008 01:22
Hallo,
ich habe in einem Ordner knapp 8.000 .chk-Dateien liegen wegen einem Festplattencrash...
Die 8.000 Dateien jetzt im Hex-Editor öffnen und nachschauen was es ev. für eine Dateityp ist, macht natürlich viel Arbeit
Deshalb die Idee eines Tools: Es liest alle Dateien des Verzeichnisses nacheinander ein:
Soweit funzt das ja ganz gut, was jetzt noch fehlt ist eine Überprüfung ob z.B. "ID3" im String "header$" vorkommt - wenn ja soll die Datei in {name}.mp3 umbenannt werden. Das Gleiche bei "JFIF" (jpg-Datei) usw.
Hat jemand so eine Vergleichsprozedur für binäre Inhalte oder sowas?
PHP-mäßig würde es so aussehen if(eregi("ID3",$header)){...}
ich habe in einem Ordner knapp 8.000 .chk-Dateien liegen wegen einem Festplattencrash...
Die 8.000 Dateien jetzt im Hex-Editor öffnen und nachschauen was es ev. für eine Dateityp ist, macht natürlich viel Arbeit

Deshalb die Idee eines Tools: Es liest alle Dateien des Verzeichnisses nacheinander ein:
Code: Alles auswählen
Procedure.s ListFiles(directory.s , filename.s, extension.s , directoryid.l )
If Right(directory,1)<>"\"
directory+"\"
EndIf
If ExamineDirectory(directoryid,directory,"*.*")
dirid=NextDirectoryEntry(directoryid)
While dirid
dirtype = DirectoryEntryType(directoryid)
Select dirtype
Case #PB_DirectoryEntry_File
file.s=DirectoryEntryName(directoryid)
this_extension.s=LCase(GetExtensionPart(file))
this_filename.s=LCase(Left(file,Len(file)-Len(this_extension)))
If Len(this_extension)
this_filename=Left(this_filename,Len(this_filename)-1)
EndIf
If this_extension=extension Or extension="*"
If this_filename=filename Or filename="*"
file.s=directory+DirectoryEntryName(directoryid)
Debug file+":"
ReadFile(0, file)
header$=ReadString(0)
; CHECK
CloseFile(0)
EndIf
EndIf
Case #PB_DirectoryEntry_Directory
If DirectoryEntryName(directoryid)<>"." And DirectoryEntryName(directoryid)<>".."
ListFiles(directory+DirectoryEntryName(directoryid)+"\",filename,extension,directoryid+1)
EndIf
EndSelect
dirid=NextDirectoryEntry(directoryid)
Wend
EndIf
ProcedureReturn ""
EndProcedure
ListFiles("d:\FOUND.000\","*","chk",0)
Hat jemand so eine Vergleichsprozedur für binäre Inhalte oder sowas?
PHP-mäßig würde es so aussehen if(eregi("ID3",$header)){...}