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; }
具体情况以后再补
相关推荐
steeven 2020-11-10
Tips 2020-10-14
nongfusanquan0 2020-08-18
清溪算法君老号 2020-06-27
清溪算法 2020-06-21
RememberMePlease 2020-06-17
nurvnurv 2020-06-05
SystemArchitect 2020-06-02
清溪算法 2020-05-27
清溪算法 2020-05-25
LczPtr 2020-05-25
举 2020-05-20
徐建岗网络管理 2020-05-10
steeven 2020-05-09
Tips 2020-05-03
猛禽的编程艺术 2020-05-01