::/** XYplorer: Generate folders checksums Creates a MD5 checksum file for the current or selected files folder. 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. The checksum file will be like [folder-name].md5 . It will replace the checksum file if there is already a checksum in it. The checksum also ignores any selected .md5 or .sfv files. At the end, it shows the execution log. @author rdoi @created feb/2014 */ $log="ChecksumInFolder.xys: RDoi MD5 checksum creator-------------------------------"; $folder=get("Path"); $log=$log."Processing '".$folder."' items..."; if (get("CountSelected") == 0) { $flist= folderreport("files", "r", $folder, "r", , ""); } else { $flist= ""; foreach($item, get("SelectedItemsPathNames"), "") { if (exists($item) == 2) { $flist= $flist. folderreport("files", "r", $item, "r", , "").""; } else { $flist= $flist.$item.""; } } } $csfile=$folder."\".regexreplace($folder,"^.*\\", "").".md5"; $template="; MD5 checksum generated by RDOI XYplorer script; ".$folder.""; $checksum=$template; foreach($file, $flist, "") { if ($file != "") { $rfile= replace($file,$folder."\",""); if ( regexmatches($rfile,"(\.md5|\.sfv)$") == "") { $hash=hash("md5",$file,3); $checksum=$checksum.$hash." *".$rfile.""; $log=$log."+ ".$rfile." [".$hash."]"; } else { $log=$log."-IGNORED: Checksum file. (".$rfile.")"; } } } if ($checksum == $template) { $log=$log."No valid files selected.=CANCELLED."; } else { if (exists($csfile) > 0) { $log=$log."=REPLACED. (".$csfile.")"; } else { $log=$log."=CREATED. (".$csfile.")"; } writefile($csfile,$checksum); } text $log;