ChecksumInFolder.xys 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. ::/** XYplorer: Generate folders checksums
  2. Creates a MD5 checksum file for the current or selected files folder.
  3. Select files or subfolders in a folder to be indexed. It will scan the selection recursively and generate a md5 checksum file in the base folder.
  4. The checksum file will be like [folder-name].md5 .
  5. It will replace the checksum file if there is already a checksum in it. The checksum also ignores any selected .md5 or .sfv files.
  6. At the end, it shows the execution log.
  7. @author rdoi
  8. @created feb/2014
  9. */
  10. $log="ChecksumInFolder.xys: RDoi MD5 checksum creator<crlf>-------------------------------<crlf>";
  11. $folder=get("Path");
  12. $log=$log."Processing '".$folder."' items...<crlf>";
  13. if (get("CountSelected") == 0) {
  14. $flist= folderreport("files", "r", $folder, "r", , "<crlf>");
  15. } else {
  16. $flist= "";
  17. foreach($item, get("SelectedItemsPathNames"), "<crlf>") {
  18. if (exists($item) == 2) {
  19. $flist= $flist. folderreport("files", "r", $item, "r", , "<crlf>")."<crlf>";
  20. } else {
  21. $flist= $flist.$item."<crlf>";
  22. }
  23. }
  24. }
  25. $csfile=$folder."\".regexreplace($folder,"^.*\\", "").".md5";
  26. $template="; MD5 checksum generated by RDOI XYplorer script<crlf>; ".$folder."<crlf>";
  27. $checksum=$template;
  28. foreach($file, $flist, "<crlf>") {
  29. if ($file != "") {
  30. $rfile= replace($file,$folder."\","");
  31. if ( regexmatches($rfile,"(\.md5|\.sfv)$") == "") {
  32. $hash=hash("md5",$file,3);
  33. $checksum=$checksum.$hash." *".$rfile."<crlf>";
  34. $log=$log."+ ".$rfile." [".$hash."]<crlf>";
  35. } else {
  36. $log=$log."-IGNORED: Checksum file. (".$rfile.")<crlf>";
  37. }
  38. }
  39. }
  40. if ($checksum == $template) {
  41. $log=$log."No valid files selected.<crlf>=CANCELLED.";
  42. } else {
  43. if (exists($csfile) > 0) {
  44. $log=$log."=REPLACED. (".$csfile.")<crlf>";
  45. } else {
  46. $log=$log."=CREATED. (".$csfile.")<crlf>";
  47. }
  48. writefile($csfile,$checksum);
  49. }
  50. text $log;