PHP调用par2 递归的处理目录并分离文件
Posted 小六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP调用par2 递归的处理目录并分离文件相关的知识,希望对你有一定的参考价值。
#!/usr/bin/php <?php function 转义引号($str) { return str_replace("‘","‘",$str); } function dir_list($dir_path = ‘‘) { if(!is_dir($dir_path)) return false; $dirs = opendir($dir_path); if($dirs) { while(($file = readdir($dirs)) !== false) { if(!in_array($file,[‘.‘,‘..‘,‘hash‘])) { //目录 if(is_dir($dir_path.‘/‘.$file)) { //在hash目录下建立对应目录结构,用来存储最终的par2文件 $hash目录对应路径 = HASH路径 .mb_substr($dir_path.‘/‘.$file,preg_match_all(‘/(.)/‘,原始路径)); @mkdir($hash目录对应路径,0777,true); //进入目录 递归 dir_list($dir_path . ‘/‘ .$file); }else { //文件 $file = 转义引号($file); $原始路径 = 转义引号(原始路径); $hash目录对应路径 = HASH路径 .mb_substr($dir_path,preg_match_all(‘/(.)/‘,原始路径)); $command = "cd $‘".转义引号($dir_path). "‘ && par2 c -r3 -n1 $‘{$file}.par2‘ $‘{$file}‘ "; file_put_contents(HASH路径.‘/par2.sh‘, $command.PHP_EOL,FILE_APPEND); } } } //移动par2文件 file_put_contents(HASH路径.‘/par2.sh‘,"cd $‘".转义引号($dir_path)."‘ && find . -maxdepth 1 -name "*.par2" -exec mv {} $‘".转义引号(str_replace(原始路径,HASH路径,$dir_path))."‘ ;".PHP_EOL,FILE_APPEND); closedir($dirs); } } exec(‘pwd‘,$当前路径,$re); if($re == 0) { $当前路径 = $当前路径[0]; define("原始路径",$当前路径); define("HASH路径", $当前路径.‘/hash‘); if(!file_exists(HASH路径)){ @mkdir(HASH路径,0777,true); } unlink(HASH路径.‘/par2.sh‘); //强制使用bash file_put_contents(HASH路径.‘/par2.sh‘, ‘#!/usr/bin/env bash‘.PHP_EOL); dir_list($当前路径); chmod(HASH路径.‘/par2.sh‘,0755); exec(HASH路径.‘/par2.sh‘,$r); var_dump(implode(PHP_EOL,$r)); }else{ exit; }
具体情况以后再补
以上是关于PHP调用par2 递归的处理目录并分离文件的主要内容,如果未能解决你的问题,请参考以下文章