2016-12-18 24 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

警告:rename(4(2).jpg、8243.jpg):指定されたファイルが見つかりませんでした。 – dexter

答えて

0

あなたはディレクトリ2009111/内のファイルをループしているが、その後、あなたは、ディレクトリの接頭辞でなく、それらを参照しますrename()

このような何かがよりよく動作するはずです(ただし以下の警告についてデータ損失を参照してください):もちろん

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

rename($oldName, $newName); 

を、あなたは変数にディレクトリ名を配置する、または他の類似したことがあり微調整。私はまだあなたがこれをやろうとしている理由についてはっきりしておらず、あなたの目標にもよりますが、より良い方法があるかもしれません。

警告!使用しているアプローチによってデータが失われる可能性があります。既存のファイルと同じ名前の$newNameを生成することができ、rename()が対象ファイルを上書きします。

$newNameは、rename()の前にexistがないことを確認する必要があります。

関連する問題