2016-09-06 144 views
-3

我有文件重命名的代碼;通過php重命名文件

<?php 
$directory= 'J:\xampp\htdocs\rename\abc'; 
$handler = opendir($directory); 
$index = 1; 
while ($file = readdir($handler)) { 
    if ($file != "." && $file != "..") { 
     rename($directory."/".$file, $directory."/".$index.".JPG"); 
     $index++; 
    } 

} 
closedir($handler); 
?> 

而是重命名文件爲1,2,3,4,... 22 它重命名這些文件作爲 1,10,11,12,13,14,15,.... ...

任何答案將受到歡迎

+0

您的代碼似乎是正確的。也許你有一個與現有文件名稱衝突? –

+0

重命名工作正常,但它們按名稱排序,你會在19之後看到2,3,4 4 –

+0

也許你只是在查看目錄時沒有正確排序目錄 – RiggsFolly

回答

0

您的代碼似乎是正確的,因爲在評論這可能是一個問題的排序表示。爲了防止這種情況,我通常 「墊」 我的電話號碼前面加零:

  • 01.JPG
  • 02.JPG
  • ...
  • 10.JPG

我用str_pad

$index = str_pad($index, 2, '0', STR_PAD_LEFT); 

您的代碼看起來像這樣:

$directory= 'J:\xampp\htdocs\rename\abc'; 
$handler = opendir($directory); 
$index = 1; 
while ($file = readdir($handler)) { 
    if ($file != "." && $file != "..") { 
     $index = str_pad($index, 2, '0', STR_PAD_LEFT); 
     rename($directory . "/" . $file, $directory . "/" . $index . ".JPG"); 
     $index++; 
    } 

} 
closedir($handler); 

我你有少於一百個文件,你應該填充1零,少於一千個墊2個零等等。

希望這會有幫助