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


Unable to rename all the files in a folder

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

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

您缺少重命名的目录

$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');
    }
}

您必须提供完整的路径,从您收到的错误来看,似乎只是提供了文件名。

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

为什么要使用$file = pathinfo($file);?pathinfo根据$file的信息创建一个assoc.数组,该数组应该为您提供完整的路径。如果你把这个拿出来,它应该会起作用。

除非您需要以下内容:

$info = pathinfo($file);
$path = $info['dirname']
$new_file = $path . '/' . 'newfile.ext';
rename($file, $new_file);