2014年2月17日 星期一

用 PHP 在 Windows 系統模擬 rm -rf 刪除路徑下的所有檔案與目錄

我們知道 rm -rf 是一個非常好用的指令,當你想強制刪除一個路徑底下的檔案及目錄只要下這個指令就可以直接把它們移除光光了!但是在原始的 Windows 系統,並不支援這個指令,那該怎麼辦呢? 下面就來介紹兩種方法,讓你能用 PHP 達成目的喔!

方法一.  下載 rm.exe 檔,並將它放入 System32 資料夾(若是 64-bit 系統請放到 SysWow64 )底下,接著記得把 PHP 的 Config 把 exec 的功能打開。如此一來你就能透過下面程式碼來達成目的囉!
  1. <?php

  2.     $path = 'C:/test';  //  欲刪除的資料夾目錄路徑
  3.     exec( "rm -rf {$path}" );

  4. ?>


方法二.  寫一個遞迴 function 來做刪除的動作。

  1. <?php

  2.     $path= 'C:/test';  //  欲刪除的資料夾目錄路徑
  3.     RemoveDir( $path, TRUE );  //  第二個參數若傳 true 連 test 目錄一起刪除

  4.     function RemoveDir( $dir, $DeleteDir ) {
  5.         $dh = @opendir( $dir );
  6.         if( !$dh ) { return; }  //  if

  7.         while ( ($obj = readdir($dh)) ) {
  8.             if( $obj == '.' || $obj == '..' ) { continue; }  //  if

  9.             if ( !@unlink($dir . '/' . $obj) ) { RemoveDir( $dir. '/' . $obj, TRUE ); }  //  if
  10.         }  //  while

  11.         if ( $DeleteDir ){
  12.             closedir( $dh );
  13.             @rmdir( $dir );
  14.         }  //  if
  15.     }

  16. ?>



沒有留言:

張貼留言