PHP批量重命名,具有多个重命名功能

时间:2012-09-06 18:05:35

标签: php

我是PHP的新手,我正在尝试做类似于user580950在Bulk Rename Files in a Folder - PHP询问的内容。

我想编写一个脚本来迭代给定目录中所有文件和目录的名称,然后做两件事:用破折号替换空格并将所有大写字母转换为小写。

根据上述问题的答案以及所需功能的PHP手册条目,我想出了以下代码:

if ($handle = opendir('/Users/username/Documents/School')) {

    while (false !== ($file_name = readdir($handle))) { 
        $to_lower = strtolower($file_name);
        $add_dashes = str_replace(" ", "-", $to_lower);
        rename($file_name , $add_dashes);
    }

    closedir($handle);
}

此代码为目标目录中的每个文件/目录返回以下错误:

  

警告:重命名(THE 273,-273):中没有此类文件或目录   第8行/Users/username/Sites/PHP/rename_files_in_directory.php

我尝试过以各种方式重新安排事情,而且我完全不知道问题出在哪里。我在Mac OSX.6.8上运行PHP 5.3.8。

非常感谢帮助!

2 个答案:

答案 0 :(得分:2)

你需要逃离空间。尝试直接使用:

重命名
<?php

if ($handle = opendir('/Users/username/Documents/School')) {

    while (false !== ($file_name = readdir($handle))) { 
        $to_lower = strtolower($file_name);
        $add_dashes = str_replace(" ", "-", $to_lower);
        exec("mv ".escapeshellarg($file_name). " ". $to_lower);
        }

    closedir($handle);
    }
?>

答案 1 :(得分:1)

$path = '/Users/username/Documents/School';
[...]
rename("$path/$file_name", "$path/$add_dashes");
[...]

chdir ('/Users/username/Documents/School');
在您的代码之前