2012-10-04 139 views
1

我需要一个脚本将文件复制到特定文件夹内的每个目录和子目录。将文件复制到路径中的每个目录和子目录PHP

在一个名为'projects'的文件夹中,我有几个文件夹和几个文件夹(等等),我需要一个脚本来检查文件夹中是否存在特定文件,如果存在,则不执行任何操作不是,复制它。

我需要做到这一点在PHP ......

你能帮忙吗?

+0

[你尝试过什么?](http://whathaveyoutried.com) – noj

+0

使用READDIR和SCANDIR和水珠只能得到深度1,那里有几乎无限的深度 – user1720742

+1

也许,这可能会给你一些见解? http://stackoverflow.com/questions/2338551/php-parse-directory-and-subdirectories-for-file-paths-and-names-of-only-jpg-imag – kush

回答

1

我希望这段代码可以帮助你为你想

$maindir="."; 
mylistFolderFiles($maindir); 
function mylistFolderFiles($dir){ 
    $file = 'example.txt'; 
    $ffs = scandir($dir); 
    foreach($ffs as $ff){ 
    if($ff != '.' && $ff != '..'){ 
     if(is_dir($dir.'/'.$ff)) { 
      $newfile=$dir.'/'.$ff .'/'. $file ; 
      if (!copy($file, $newfile)) { 
       echo "failed to copy $file...\n"; 
      } 
      mylistFolderFiles($dir.'/'.$ff); 
     } 
    } 

    } 

} 
+0

这只能得到深度1,所以它doesnt工作,但无论如何感谢 – user1720742

+0

对不起,我改变了我的代码看看我认为固定subdir问题 – Afshin

+0

,作品像一个魅力,非常感谢你...(仍然缺少检查,如果存在的一部分,但没关系,文件少超过490字节,因此覆盖不会影响性能)。 – user1720742

1

这什么会复制所有文件,所有文件夹和其内容从....目录cunnrent目标..使用RecursiveDirectoryIteratorRecursiveIteratorIterator

echo "<pre>"; 
mkdirRecursive($target); 
if (! is_writable($target)) { 
    echo "You don't have permission wo write to ", $target, PHP_EOL; 
} 
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); 
while ($it->valid()) { 
    if (! $it->isDot()) { 
     $name = $it->key(); 
     $final = $target . str_replace($dir, "", $name); 
     if (! mkdirRecursive(dirname($final))) { 
      echo "Can Create Directory : ", dirname($final), PHP_EOL; 
      continue; 
     } 
     if (! @copy($name, $final)) { 
      echo "Can't Copy : ", dirname($final), PHP_EOL; 
      continue; 
     } 
     echo "Copied ", basename($name), " to ", dirname($final), PHP_EOL; 
    } 
    $it->next(); 
} 

function mkdirRecursive($pathname, $mode = 0777) { 
    is_dir(dirname($pathname)) || mkdirRecursive(dirname($pathname), $mode); 
    return is_dir($pathname) || @mkdir($pathname, $mode); 
} 
相关问题