【问题标题】:PHP bulk rename, with more than one renaming functionPHP批量重命名,具有不止一种重命名功能
【发布时间】:2012-09-06 18:05:35
【问题描述】:

我是 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,the-273):没有这样的文件或目录 /Users/username/Sites/PHP/rename_files_in_directory.php 在第 8 行

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

我们将不胜感激!

【问题讨论】:

  • 您是否需要将完整的文件路径放入对rename()的调用中?
  • 我不这么认为,因为我以为是opendir()函数打开了目录,但也许这就是问题

标签: php


【解决方案1】:

您需要转义空格。尝试直接使用重命名:

<?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);
    }
?>

【讨论】:

  • @Raidence ,虽然,当我尝试使用不同目录路径的相同脚本时,我收到类似的错误:Warning: rename(Sivulka 3,6,7 analysis.odt,sivulka-3,6,7-analysis.odt): No such file or directory in /Users/username/Sites/PHP/rename_files_in_directory.php on line 8 usage: mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory 条目是文件还是目录有关系吗?
  • 不,没关系,我尝试创建Sivulka 3,6,7 analysis.odt 作为目录和文件,并使用上面的脚本成功地重命名它们。您是否能够重命名该目录中的其他文件?
  • 我尝试的第一个目录只包含其他目录。我尝试将路径更改为另一个目录并出现错误,据我所知,除了路径之外没有什么不同。
【解决方案2】:
$path = '/Users/username/Documents/School';
[...]
rename("$path/$file_name", "$path/$add_dashes");
[...]

或

chdir ('/Users/username/Documents/School');

在您的代码之前。

【讨论】:

  • 我最终不需要这样做,但我确实尝试过,我得到了和以前一样的错误,还有一个额外的“除以零”错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2011-04-17
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 2013-07-01
相关资源
最近更新 更多