遍历目录,重命名目录下的文件
下了个教程,但是没有字幕,找到外挂字幕,但是由于名字不一样,但是又有规律(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');
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();
作者:恶魔的果实
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.