0
function copy_directory( $source, $destination ) {
    if ( is_dir( $source ) ) {
        @mkdir( $destination );
        $directory = dir( $source );
        while ( FALSE !== ( $readdirectory = $directory->read() ) ) {
            if ( $readdirectory == '.' || $readdirectory == '..' ) {
                continue;
            }
            $PathDir = $source . '/' . $readdirectory; 
            if ( is_dir( $PathDir ) ) {
                copy_directory( $PathDir, $destination . '/' . $readdirectory );
                continue;
            }
            copy( $PathDir, $destination . '/' . $readdirectory );
        }

        $directory->close();
    }else {
        copy( $source, $destination );
    }
}

这是我将整个目录和文件复制到另一个目的地的脚本。但我有一个小问题

我的文件夹如下:

cinch.v2.1.1\cinch\cinch\other folders and files
loopy.v2.1.3\loopy\loopy\other folders and files
musy.v3.1.4\musy\musy\other folders and files
...

我只需要复制最后一个(深度 3)cinch、loopy、musy 文件夹,其中包含子文件夹和文件,而不是整个结构。怎么改剧本。

和复制结构应该是这样的:

cinch\other folders and files
loopy\other folders and files
musy\other folders and files

我从

if (strpos($readdirectory, '.') === false && strpos($readdirectory, '_') === false) {   

但这不能正常工作。

4

1 回答 1

1

您必须首先查找 3 级目录,然后将这些目录复制到您的目的地:

function copy_directory(...) {
...
}

function copy_depth_dirs($source, $destination $level)
{
    $dir = dir($source);
    while (($entry = $dir->read()) !== FALSE) {
        if ($entry != '.' && $entry != '..' && is_dir($entry)) {
            if ($level == 0) {
                copy_directory($source . '/' . $entry, $destination);
            } else {
                copy_depth_dirs($source . '/' . $entry, $destination, $level - 1);
            }
        }
    }
}

copy_depth_dirs('cinch.v2.1.1', $destination, 3);
于 2012-11-14T09:28:21.563 回答