2016-04-07 20 views
0

In PHP möchte ich rekursiv kopieren Sie alle Dateien aus einem Verzeichnis und seine Unterverzeichnisse in ein einziges Verzeichnis ohne Unterverzeichnisse.PHP rekursive kopieren Verzeichnisse zu einzelnen Verzeichnis

z.B.

.../dir/subdir1/file1.pdf

.../dir/subdir1/file2.pdf

.../dir/subdir2/file3.pdf

. ../dir/subdir2/file4.pdf

sollte geworden:

.../newdir/file1.pdf

.../ne wdir/file2.pdf

.../newdir/file3.pdf

.../newdir/file4.pdf

dh. Es gibt kein 'Subdir' Level mehr.

ich diesen PHP-Code verwenden, kopiert es alle Dateien, aber es ist die Unterverzeichnisse Halte was nicht erwünscht ist:

<?php 
$src = "/dir/"; 
$dst = "/newdir/"; 

function recurse_copy($src,$dst) { 
    $dir = opendir($src); 
    @mkdir($dst); 
    while(false !== ($file = readdir($dir))) { 
     if (($file != '.') && ($file != '..')) { 
      if (is_dir($src . '/' . $file)) { 
       recurse_copy($src . '/' . $file,$dst . '/' . $file); 
      } 
      else { 
       copy($src . '/' . $file,$dst . '/' . $file); 
      } 
     } 
    } 
    closedir($dir); 
} 

recurse_copy($src,$dst); 

echo "<H3>Copy Paste completed!</H3>"; //output when done 
?> 

Antwort

0

Sie einen falschen Wert für das Ziel Argument übergeben, wenn die Datei ein Verzeichnis ist . Wenn Sie eine flache Verzeichnisstruktur wollen, sollte es nur:

recurse_copy($src . '/' . $file, $dst); 

statt:

recurse_copy($src . '/' . $file, $dst . '/' . $file);