2013-06-23 144 views
0

我一直在嘗試使用下面的代碼片斷更改文件夾中的所有圖片文件的文件擴展名:無法將文件夾中的所有文件重命名

$dh = opendir('JS2C'); 
$files = array(); 
while (($file = readdir($dh)) !== false) { 
    if($file !== '.' && $file !== '..') { 
     $file = pathinfo($file); 
     rename($file, $new . '.jpg'); 
    } 
} 

我得到以下警告消息:

SCREAM: Error suppression ignored for 
Warning: rename(ANAZODO.gif,ANAZODO.jpg): 
The system cannot find the file specified. (code: 2) in C:\wamp2\www\ckcportal\batch2.php on ... 

包含這些文件的文件夾與PHP腳本位於同一個文件夾中。

回答

1

你缺少目錄重命名

$d = 'JS2C/' 
$dh = opendir($d); 
while (($file = readdir($dh)) !== false) { 
    if($file !== '.' && $file !== '..') { 
     //$file_no_ext = substr($file, 0,strrpos($file,'.'));// before php 5.2 

     $path_parts = pathinfo($file); // php 5.2 
     $file_no_ext = $path_parts['filename']; // php 5.2 

     rename($d.$file, $d.$file_no_ext . '.jpg'); 
    } 
} 
1

你必須提供完整的路徑,從你收到的錯誤,它看起來像你只是給文件名。

rename('/path/to/old/file', '/path/to/new/file'); 

爲什麼使用$file = pathinfo($file);pathinfo創建一個關聯。從$file的信息數組應該給你完整的路徑。如果你拿出來,它應該工作。

除非你需要以下:

$info = pathinfo($file); 
$path = $info['dirname'] 

$new_file = $path . '/' . 'newfile.ext'; 

rename($file, $new_file);