无法重命名文件夹中的所有文件

时间:2013-06-23 12:32:00

标签: php rename file-rename

我一直在尝试使用以下代码段更改文件夹中所有图片文件的文件扩展名:

$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脚本位于同一文件夹中。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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');
    }
}