遍历目录,重命名目录下的文件

下了个教程,但是没有字幕,找到外挂字幕,但是由于名字不一样,但是又有规律(0101 **** 替换成 01 01. ***),不想手动重命名,就写了个函数来批量重命名。这里写成class纯粹是多此一举,懒得改了,下面上代码,没注释,因为简单

 <?php 

class RenameSRT {
    public function traverse($dir) {
        if (is_dir($dir)) {
            $handle = dir($dir);
            if ($handle) {
                while (FALSE !== ($file = $handle->read())) {
            if ($file != '.' && $file != '..') {
                $this->traverse($dir.'\\'.$file);
            }
          }
            } else {
                echo '打开目录失败<br />';
            }
            $handle->close();
        }//echo $dir.'************';
       if (is_file($dir)) {
           $fileName = $this->getFileName($dir);
           $filePath = $this->getFilePath($dir);
           $fileType = substr($fileName, strrpos($fileName, '.')+1);
           //echo $fileType.'<br />';
           if ($fileType == 'srt') {
             $fileReadName =  $this->getRename($fileName);
           }
       //    echo '**********'.$filePath.'\\'.$fileReadName.'************';
           if (rename($dir, ($filePath.'\\'.$fileReadName))) {
               echo '重命名成功'.'<br />';
           }else {
               echo '重命名失败'.'<br />';
           }
       }else {
           //echo "$dir.<br />";
       }
    }
    
    private function getFileName($filePath) {
        return basename($filePath);
    }
    
    private function getFilePath($filePath) {
        return dirname($filePath);
    }
    
    private function getRename($fileName) {
        //echo $fileName.'<br />';
        $tem = substr($fileName, 0, 4);
        //echo $tem.'<br/>';
        $replace = $tem[0].$tem[1].' '.$tem[2].$tem[3].'.';
        $tem = substr_replace($tem, $replace, 0);
        //echo $replace.'<br />';
        //echo $tem.'<br/>';
        $fileName = substr_replace($fileName, $replace , 0, 4);
        //echo $fileName.'<br />';
        return $fileName;
    }
    
    
}

$renamesrt = new RenameSRT();
$renamesrt->traverse('C:\meterial\PHP');

 

这里最重要的是要文件名要有规律,然后$tem按照规律的到字符串,剩下的就是substr_replace,然后rename();

posted @ 2012-10-25 12:31  恶魔的果实  阅读(474)  评论(0编辑  收藏  举报