2016-12-18 84 views
-2

我想用隨機數字或字符重命名文件夾中的所有文件。用隨機名稱重命名文件夾中的所有文件

這是我的代碼:

$dir = opendir('2009111'); 
$i = 1; 
// loop through all the files in the directory 
while (false !== ($file = readdir($dir))) { 
     // do the rename based on the current iteration 
     $newName = rand() . (pathinfo($file, PATHINFO_EXTENSION)); 
     rename($file, $newName); 
     // increase for the next loop 
     $i++; 
} 
// close the directory handle 
closedir($dir); 

,但我得到這個錯誤:

Warning: rename(4 (2).jpg,8243.jpg): The system cannot find the file specified

+0

這聽起來像一個[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你通過這樣做想達到什麼目的?你得到的錯誤是什麼? – Chris

+2

1. *但是這個錯誤*,有什麼錯誤? 2.在'while()'循環中使用變量'$ i'沒有意義。 –

+0

警告:重命名(4(2).jpg,8243.jpg):系統找不到指定的文件... – dexter

回答

0

你通過文件循環目錄2009111/,但你是指他們沒有在目錄前綴rename()

像這樣的東西應該更好地工作(儘管看到警告有關數據丟失下面):

$oldName = '2009111/' . $file; 
$newName = '2009111/' . rand() . (pathinfo($file, PATHINFO_EXTENSION)); 

rename($oldName, $newName); 

當然,你可以把它放到目錄名中的變量或進行其他類似調整。我還不清楚你爲什麼要這樣做,並且根據你的目標,可能有更好的方法來達到目標​​。

警告!您正在使用的方法可能會導致數據丟失!可以生成與現有文件名稱相同的,rename()覆蓋目標文件。

您或許應該確保$newName不會exist在您之前rename()

相關問題