将文件夹中的所有文件和文件夹移至另一个文件夹

我想将一个文件夹内的所有文件和文件夹移动到另一个文件夹。 我发现一个代码将一个文件夹内的所有文件复制到另一个文件夹。 将文件夹中的所有文件移到另一个文件夹

// Get array of all source files $files = scandir("source"); // Identify directories $source = "source/"; $destination = "destination/"; // Cycle through all source files foreach ($files as $file) { if (in_array($file, array(".",".."))) continue; // If we copied this successfully, mark it for deletion if (copy($source.$file, $destination.$file)) { $delete[] = $source.$file; } } // Delete all successfully-copied files foreach ($delete as $file) { unlink($file); } 

如何更改此项以将此文件夹内的所有文件夹和文件移至其他文件夹。

这是我使用的

  // Function to remove folders and files function rrmdir($dir) { if (is_dir($dir)) { $files = scandir($dir); foreach ($files as $file) if ($file != "." && $file != "..") rrmdir("$dir/$file"); rmdir($dir); } else if (file_exists($dir)) unlink($dir); } // Function to Copy folders and files function rcopy($src, $dst) { if (file_exists ( $dst )) rrmdir ( $dst ); if (is_dir ( $src )) { mkdir ( $dst ); $files = scandir ( $src ); foreach ( $files as $file ) if ($file != "." && $file != "..") rcopy ( "$src/$file", "$dst/$file" ); } else if (file_exists ( $src )) copy ( $src, $dst ); } 

用法

  rcopy($source , $destination ); 

另一个例子没有删除目标文件或文件夹

  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); } 

请参阅: http : //php.net/manual/en/function.copy.php更多的例子

谢谢 :)

使用rename而不是copy

与具有相同名称的C函数不同, rename可以将文件从一个文件系统移动到另一个文件系统(从Unix上的PHP 4.3.3开始,在Windows上从PHP 5.3.1开始)。

认为这应该做的伎俩: http : //php.net/manual/en/function.shell-exec.php

 shell_exec("mv sourcedirectory path_to_destination"); 

希望这个帮助。

移动文件夹:

 <?php $oldfolderpath = "old/old_folder_name"; $newfolderpath = "new/new_folder_name"; rename($oldfolderpath,$newfolderpath); ?> 

我用它

 // function used to copy full directory structure from source to target function full_copy( $source, $target ) { if ( is_dir( $source ) ) { mkdir( $target, 0777 ); $d = dir( $source ); while ( FALSE !== ( $entry = $d->read() ) ) { if ( $entry == '.' || $entry == '..' ) { continue; } $Entry = $source . '/' . $entry; if ( is_dir( $Entry ) ) { full_copy( $Entry, $target . '/' . $entry ); continue; } copy( $Entry, $target . '/' . $entry ); } $d->close(); }else { copy( $source, $target ); } } 
 $src = 'user_data/company_2/T1/'; $dst = 'user_data/company_2/T2/T1/'; rcopy($src, $dst); // Call function // Function to Copy folders and files function rcopy($src, $dst) { if (file_exists ( $dst )) rrmdir ( $dst ); if (is_dir ( $src )) { mkdir ( $dst ); $files = scandir ( $src ); foreach ( $files as $file ) if ($file != "." && $file != "..") rcopy ( "$src/$file", "$dst/$file" ); } else if (file_exists ( $src )) copy ( $src, $dst ); rrmdir ( $src ); } // Function to remove folders and files function rrmdir($dir) { if (is_dir($dir)) { $files = scandir($dir); foreach ($files as $file) if ($file != "." && $file != "..") rrmdir("$dir/$file"); rmdir($dir); } else if (file_exists($dir)) unlink($dir); }