2012-10-04 178 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); 
} 
相關問題