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

问题描述 投票:0回答:1

我正在尝试浏览目录并将所有文件夹重命名为某个名称,并在末尾附加原始文件夹名称。它的工作原理除了很多次它在旧文件夹名称前添加我想要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);
}

以及他们得到的名字:

  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷9
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷11
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷7
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷6
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷1
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷10
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷8
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷4
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷3
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷12
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷2
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷13
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷5
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷9
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷11
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷7
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷1
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷10
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷4
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷3
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷2
  • / Volumes / COMICS / MOVED / Marvel漫画/复仇者联盟/第2卷/复仇者联盟第2卷复仇者联盟第2卷13
  • /体积/ COMICS / MOVED /奇迹漫画/复仇者联盟/第2卷/复仇者联盟第2集复仇者联盟第2卷复仇者联盟第2卷9
  • /体积/ COMICS / MOVED /奇迹漫画/复仇者联盟/第2卷/复仇者联盟第2集复仇者联盟第2卷复仇者联盟第2卷7
  • /体积/ COMICS / MOVED /漫威漫画/复仇者联盟/第2卷/复仇者联盟第2集复仇者联盟第2卷复仇者联盟第2卷3
  • /体积/ COMICS / MOVED /奇迹漫画/复仇者联盟/第2卷/复仇者联盟第2集复仇者联盟第2集复仇者联盟第2卷复仇者联盟第2卷9
  • /体积/ COMICS / MOVED /奇迹漫画/复仇者联盟/第2卷/复仇者联盟第2集复仇者联盟第2集复仇者联盟第2集复仇者联盟第2卷复仇者联盟第2卷9
php html macos readdir
1个回答
1
投票

据我所知,句柄是指针 - 它指向的“数据”不是固定的,但可以改变。因此,我猜测当你在while循环中为文件夹添加前缀时,重命名的文件夹也会通过while循环通过句柄识别并再次作为前缀。

你可能最好使用glob

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

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

© www.soinside.com 2019 - 2024. All rights reserved.