php 读取目录并重命名文件夹
php read a dir and rename folders
我正在尝试遍历一个目录并将所有文件夹重命名为特定名称,并在末尾附加原始文件夹名称。除了很多时候它在旧文件夹名称前添加我想要的标题 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 Comics/Avengers/Volume 2/复仇者联盟第 2 卷 9
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷2 11
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 7
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 6
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 1
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 10
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 8
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷4
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷3
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷12
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷2
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷13
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷5
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 9
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 11
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷复仇者联盟第2卷7
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷复仇者联盟第 2 卷 1
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷复仇者联盟第 2 卷 10
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/Avengers Volume 2 复仇者联盟 Vol ume 2 4
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷复仇者联盟第 2 卷 3
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 2
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 13
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷9
- /Volumes/COMICS/MOVED/MarvelComics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷7
- /Volumes/COMICS/MOVED/MarvelComics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷3
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷9
- /Volumes/COMICS/MOVED/MarvelComics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟复仇者联盟第 2 卷复仇者联盟第 2 卷 9
据我所知,句柄是一个指针——它指向的 "data" 不是固定的,但可以改变。所以我猜想,当您在 while 循环中为文件夹添加前缀时,重命名的文件夹也会通过 while 循环的句柄识别并再次添加前缀。
您最好使用 glob
$folders = glob( $dir . '/*' , GLOB_ONLYDIR);
到return一个子目录数组,然后遍历数组以重命名所有条目。
我正在尝试遍历一个目录并将所有文件夹重命名为特定名称,并在末尾附加原始文件夹名称。除了很多时候它在旧文件夹名称前添加我想要的标题 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 Comics/Avengers/Volume 2/复仇者联盟第 2 卷 9
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷2 11
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 7
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 6
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 1
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 10
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷 8
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷4
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷3
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷12
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷2
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷13
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷5
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 9
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 11
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷复仇者联盟第2卷7
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第2卷复仇者联盟第 2 卷 1
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷复仇者联盟第 2 卷 10
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/Avengers Volume 2 复仇者联盟 Vol ume 2 4
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟第 2 卷复仇者联盟第 2 卷 3
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 2
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume 2/复仇者联盟2 复仇者联盟2 13
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷9
- /Volumes/COMICS/MOVED/MarvelComics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷7
- /Volumes/COMICS/MOVED/MarvelComics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷3
- /Volumes/COMICS/MOVED/Marvel Comics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷复仇者联盟第2卷9
- /Volumes/COMICS/MOVED/MarvelComics/Avengers/Volume2/复仇者联盟第2卷复仇者联盟第2卷复仇者联盟复仇者联盟第 2 卷复仇者联盟第 2 卷 9
据我所知,句柄是一个指针——它指向的 "data" 不是固定的,但可以改变。所以我猜想,当您在 while 循环中为文件夹添加前缀时,重命名的文件夹也会通过 while 循环的句柄识别并再次添加前缀。
您最好使用 glob
$folders = glob( $dir . '/*' , GLOB_ONLYDIR);
到return一个子目录数组,然后遍历数组以重命名所有条目。