批量重命名所有子目录的gifs rename()php

时间:2018-04-06 05:41:43

标签: php file-rename

我有很多,但在主文件夹gifs/

内的几个文件夹(类别名称)中有很多GIF(大约五千个)

问题

我需要重命名所有的GIF以获得简单的相关数字。例如image (24).gif213.gif(与主目录序列相关)

我使用此函数返回整个GIF列表

PHP功能

 $dir = '../gifs';

function listFolderFiles($dir)
 {
   echo '<ol>';
    foreach (new DirectoryIterator($dir) as $i => $fileInfo) {
    if (!$fileInfo->isDot()) {
        echo '<li>' . $fileInfo->getFilename();
        if ($fileInfo->isDir()) {
            listFolderFiles($fileInfo->getPathname());
        }
        echo " - >".$i.'</li>';
       }
    }
    echo '</ol>';
  }
  listFolderFiles($dir);
  //rename('picture.gif', '1.gif');

这是一些文件结构,最重要的是它们的名字都有括号......

hugs
 animaton (11).gif
 animaton (12).gif
 animaton (13).gif
 animaton (17).gif
 animaton (18).gif
 animaton (19).gif
 animaton (22).gif
 animaton (23).gif
 animaton (26).gif
 animaton (27).gif
 animaton (29).gif
 animaton (31).gif
 animaton (34).gif
 animaton (35).gif
 animaton (4).gif
 animaton (41).gif
 animaton (43).gif
 animaton (46).gif
 animaton (49).gif
 animaton.gif
bored
 animaton (1).gif
 animaton (13).gif
 animaton (17).gif
 animaton (18).gif
 animaton (19).gif
 animaton (20).gif
 animaton (25).gif
 animaton (27).gif
 animaton (29).gif
 animaton (31).gif
 animaton (33).gif
 animaton (35).gif
 animaton (36).gif
 animaton (40).gif
 animaton (41).gif
 animaton (43).gif
 animaton (45).gif
 animaton (49).gif
 animaton (5).gif
 animaton (7).gif
 animaton (9).gif
wink
 animaton (11).gif
 animaton (12).gif
 animaton (21).gif
 animaton (27).gif
 animaton (3).gif
 animaton (35).gif
 animaton (36).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (43).gif
 animaton (8).gif
sleepy
 animaton (11).gif
 animaton (12).gif
 animaton (13).gif
 animaton (14).gif
 animaton (16).gif
 animaton (17).gif
 animaton (19).gif
 animaton (20).gif
 animaton (21).gif
 animaton (22).gif
 animaton (24).gif
 animaton (26).gif
 animaton (27).gif
 animaton (29).gif
 animaton (3).gif
 animaton (32).gif
 animaton (34).gif
 animaton (35).gif
 animaton (36).gif
 animaton (37).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (40).gif
 animaton (41).gif
 animaton (45).gif
 animaton (46).gif
 animaton (49).gif
 animaton (5).gif
 animaton (6).gif
 animaton (9).gif
 animaton.gif
love
 animaton (1).gif
 animaton (11).gif
 animaton (13).gif
 animaton (14).gif
 animaton (17).gif
 animaton (18).gif
 animaton (20).gif
 animaton (21).gif
 animaton (24).gif
 animaton (25).gif
 animaton (27).gif
 animaton (28).gif
 animaton (29).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (40).gif
 animaton (41).gif
 animaton (44).gif
 animaton (48).gif
 animaton (5).gif
 animaton (7).gif
 animaton (9).gif
 animaton.gif
claps
 animaton (1).gif
 animaton (10).gif
 animaton (11).gif
 animaton (12).gif
 animaton (13).gif
 animaton (15).gif
 animaton (16).gif
 animaton (17).gif
 animaton (19).gif
 animaton (20).gif
 animaton (21).gif
 animaton (22).gif
 animaton (23).gif
 animaton (25).gif
 animaton (28).gif
 animaton (3).gif
 animaton (30).gif
 animaton (31).gif
 animaton (34).gif
 animaton (35).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (40).gif
 animaton (41).gif
 animaton (42).gif
 animaton (43).gif
 animaton (44).gif
 animaton (46).gif
 animaton (47).gif
 animaton (49).gif
 animaton (5).gif
 animaton (6).gif
 animaton (7).gif
 animaton (8).gif
scared
 animaton (1).gif
 animaton (10).gif
 animaton (12).gif
 animaton (13).gif
 animaton (15).gif
 animaton (16).gif
 animaton (17).gif
 animaton (18).gif
 animaton (21).gif
 animaton (24).gif
 animaton (33).gif
 animaton (39).gif
 animaton (40).gif
 animaton (46).gif
 animaton (6).gif

1 个答案:

答案 0 :(得分:1)

<强> 声明!!

我已经测试了这个,但我的行为可能不是你想要的。

此函数将递归遍历您提供的目录中的每个文件和子文件夹。然后,它将在每个文件夹中按编号(连续计数)更改任何文件的名称。

我已经注释掉了rename()函数,以便在您对结果满意之前不重命名。取消注释rename()函数后,它将重命名每个文件。因此,如果它不按你想要的方式工作,那就没有回头路了。这可能会对您的文件夹/文件结构造成严重破坏。

您应备份文件,然后再继续以防万一。

$dir = '../gifs';

function listFolderFiles($dir){

  $results = new DirectoryIterator($dir);

  echo '<ul>';

  $count = 1;
  foreach($results as $fileInfo){

      if($fileInfo->isFile()){

        $oldFileName = $fileInfo->getPathname();
        $newFileName = $fileInfo->getPath() . '/' . $count . '.gif';

        //rename($oldFileName, $newFileName); //<-- Uncomment here to actually
        //rename your files.  Only do this when you are sure you are happy
        //with the results.

        echo '<li>' . 'File  Old: ' . $oldFileName . '  New: ' . $newFileName . '</li>';

        $count++;

      }

      if($fileInfo->isDir() && !$fileInfo->isDot()){

        echo '<li>' . 'Folder: ' . $fileInfo->getPathname() . '</li>';
        listFolderFiles($fileInfo->getPathname());

      }

  }

  echo '</ul>';



}


listFolderFiles($dir);