如何使用子目录名前缀重命名子目录中的所有文件,然后将文件移动到新目录?

时间:2012-07-16 18:30:05

标签: php recursion copy rename move

我基本上有这样的设置:

C:\Upload\A
C:\Upload\B
C:\Upload\C
C:\Upload\D
C:\Upload\E

其中A,B,C,D,E总是不同(产品ID)并且总是不同的数量(它不总是5个子目录)。这些子目录中的每一个包含24个以数字01-24编号的图像。

我需要创建一个远程通过Web(IIS)运行的PHP文件,该文件查看Upload目录,获取每个子目录的名称,并将该名称附加到该子目录中包含的每个图像文件的开头

因此,C:\Upload\A\01.jpg将成为C:\Upload\A\A-O1.jpg以及每个子目录中的其他23个图像。

PHP文件需要对Upload目录中的每个子目录执行相同的操作。

然后,一旦重命名完成,PHP需要将所有目录(及其图像)从Upload目录复制到另一个目录。复制后,需要清除上传目录。

1 个答案:

答案 0 :(得分:0)

这应该有效:

<?php
    define('START_DIR', '/opt/lampp/htdocs/start');
    define('DEST_DIR', '/opt/lampp/htdocs/dest');
    define('SEPARATOR', '\\');

    function firstStage() {
        $d = dir(START_DIR);
        while (false !== ($entry = $d->read())) {
            if($entry != '.' && $entry != '..')
                secondStage($entry);
        }
        $d->close();
    }

    function secondStage($prefix) {
        $d = dir(START_DIR . SEPARATOR . $prefix);
        while (false !== ($entry = $d->read())) {
            if($entry != '.' && $entry != '..')
                rename(START_DIR . SEPARATOR . $prefix . SEPARATOR . $entry, DEST_DIR . SEPARATOR . $prefix . '-' . $entry);
        }
        $d->close();
    }

    firstStage();
?>

只需致电firstStage()即可开始此过程。确保您拥有START_DIRDEST_DIR

的读/写权限