简体   繁体   English

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

[英]Unable to rename all the files in a folder

I've been trying to change the file extension of all the picture files in a folder using the following snippet: 我一直在尝试使用以下代码段更改文件夹中所有图片文件的文件扩展名:

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

I get the following warning messages: 我收到以下警告消息:

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 ...

The folder that contains the files is in the same folder with the PHP script. 包含文件的文件夹与PHP脚本位于同一文件夹中。

You have to supply the full path, from the error you are receiving, it looks like you are just giving the file name. 您必须提供完整路径,从您收到的错误,看起来您只是给出文件名。

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

And why are you using $file = pathinfo($file); 你为什么要使用$file = pathinfo($file); ? pathinfo creates an assoc. pathinfo创建一个assoc。 array from information of $file which should be giving you the full path. 来自$file信息的数组,它应该给你完整的路径。 If you take this out, it should work. 如果你拿出来,它应该工作。

Unless you need to following: 除非你需要遵循:

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

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

rename($file, $new_file);

you are missing directory for rename 您缺少重命名目录

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM