php读取目录并重命名文件夹

时间:2018-09-02 12:54:45

标签: php html macos readdir

我正在尝试浏览目录,并将所有文件夹重命名为特定名称,并将原始文件夹名称附加到末尾。它的工作原理除了很多次,它在旧文件夹名称前面添加了我想要的2、3、4次的标题。这些文件夹最初是数字,我想在它们之前添加标题。

代码:

$skip = array(".","..","...");

$dir = '/Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2';
$t = 'Avengers Volume 2';

if ($handle = opendir($dir)) {
    while (false !== ($entry = readdir($handle))) {
      if (!in_array($entry,$skip)) {
        $newName = $t." ".$entry;
        $ol = $dir."/".$entry;
        $nl = $dir."/".$newName;
        rename($ol,$nl);
      }
    }
    closedir($handle);
}

以及它们的命名方式:

  • /卷/ COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/ Avengers第2卷9
  • / lili / Volumes / COMICS / MOVED / Marvel漫画/复仇者/第2卷/ Avengers第2卷11
  • /卷/ COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/ Avengers第2卷7
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者/第2卷/ Avengers第2卷6
  • /卷/ COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者第2卷
  • /卷/ COMICS / MOVED / Marvel漫画/复仇者/第2卷/ Avengers第2卷10
  • /卷/ COMICS / MOVED /漫威漫画/ Avengers /第2卷/ Avengers第2卷8
  • / Volumes / COMICS / MOVED / Marvel漫画/ Avengers /第2卷/复仇者第2卷4
  • /卷/ COMICS / MOVED /漫威漫画/复仇者/第2卷/复仇者第2 3
  • /卷/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/复仇者联盟第2卷12
  • /卷/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/复仇者联盟第2卷2
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷13
  • / Vol umes / COMICS / MOVED / Marvel Comics / Avengers / Volume 2 / Avengers Volume 2 5
  • / Volumes / COMICS / MOVED / Marvel Comics / Avengers / Volume 2 / Avengers Volume 2 Avengers Volume 2 9
  • /卷/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/ Avengers Volume 2复仇者联盟第2卷11
  • / lili / Volumes / COMICS / MOVED / Marvel Comics / Avengers / Volume 2 / Avengers Volume 2复仇者联盟第2卷7
  • / Volumes / COMICS / MOVED / Marvel Comics / Avengers / Volume 2 / Avengers Volume 2复仇者联盟第2卷1 1
  • / Volumes / COMICS / MOVED / Marvel Comics / Avengers /第2卷/ Avengers第2卷Avengers第2卷10
  • / Volumes / COMICS / MOVED / Marvel Comics / Avengers /第2卷/ Avengers第2卷Avengers第2卷4 4
  • /卷/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷3
  • /卷/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷2 2
  • /卷/ COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷13
  • / Volumes / COMICS / MOV ED /漫威漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟2复仇者联盟第2卷9
  • /卷/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/复仇者联盟第2复仇者联盟第2卷复仇者联盟2 7
  • /卷/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/ Avengers第2卷复仇者联盟第2卷复仇者联盟第2卷3 3
  • / Volumes / COMICS / MOVED / Marvel Comics /复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷9
  • /卷/漫画/移动/漫威漫画/复仇者联盟/第2卷/复仇者联盟第2复仇者联盟第2卷复仇者联盟2复仇者联盟2 9

1 个答案:

答案 0 :(得分:1)

据我了解,句柄是指针-它指向的“数据”不是固定的,但可以更改。所以我猜想,当您在while循环中为文件夹添加前缀时,重命名的文件夹也将通过while循环通过句柄进行标识,并再次加上前缀。

使用glob

可能会更好

$folders = glob( $dir . '/*' , GLOB_ONLYDIR);

返回一个子目录数组,然后遍历数组以重命名所有条目。