2013-06-05 74 views
1

...當然,與.EXT,我的意思是,保留原始擴展!PHP - 文件夾中的所有文件重命名爲1.ext,2.ext,3.ext

現在這個問題已經被問過,但古怪,答案甚至不遠程工作。對我來說,就是這樣。現在

,我開始與此:

$directory = $_SERVER['DOCUMENT_ROOT'].$fileFolder.'/'; 
$i = 1; 
$handler = opendir($directory); 
while ($file = readdir($handler)) { 
    if ($file != "." && $file != "..") { 
     $newName = $i . '.jpg'; 
     rename($file, $newName); 
     $i++; 
    } 
} 
closedir($handler); 

看起來很簡單的給我,但它不會重命名的文件... 有沒有人有一個線索是什麼問題呢? 或者只是一個工作片段...:D

+0

我要去猜測權限錯誤。 –

+0

沒有$ fileFolder開始以「/」,如果沒有:應該。 – luk2302

+0

@ luk2302:它的確如此!整個腳本,除了重命名位之外,已經適用於簡單閱讀文件夾的內容。 – AmarokM

回答

8

當您重命名時,您需要完整的相對/絕對名稱,而不是相對於您當前正在走過的目錄的文件名。但readdir()只相對於你走在目錄中的文件名返回。

$directory = $_SERVER['DOCUMENT_ROOT'].$fileFolder.'/'; 
$i = 1; 
$handler = opendir($directory); 
while ($file = readdir($handler)) { 
    if ($file != "." && $file != "..") { 
     $newName = $i . '.jpg'; 
     rename($directory.$file, $directory.$newName); // here; prepended a $directory 
     $i++; 
    } 
} 
closedir($handler); 
1

readdir()僅返回正在掃描的目錄的文件名。既然你打開任何目錄你正在運行腳本,你需要在重命名調用子目錄的子目錄,例如:

rename($directory . $file, $directory . $newName); 
1
<? 
$dir = opendir('test'); 
$i = 1; 

// loop through all the files in the directory 
while (false !== ($file = readdir($dir))) 
{ 
    // if the extension is '.jpg' 
    if (strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'jpg') 
    { 
     // do the rename based on the current iteration 
     $newName = 'test/'. $i . '.jpg'; 
     $new = 'test/'.$file; 
     rename($new, $newName); 

     // increase for the next loop 
     $i++; 
    } 
} 

// close the directory handle 
closedir($dir); 
?> 
www.codeprojectdownload.com 
+0

工作就像一個魅力;) –