0

我正在尝试以这种方式编写批量重命名:

if ($handle = opendir('../../upload_files')) {
  while (false !== ($fileName = readdir($handle))) {
    $newName = str_replace(", ","_",$fileName);
    rename($fileName, $newName);
    $count++;
  }
  closedir($handle);
  echo $count." files renamed";
}

但是当我运行脚本时,我收到一个警告:

Warning: rename(..,..) [function.rename]: No error in E:\WEBS\rename.php on line 6

是什么导致了错误?

4

1 回答 1

0

如果目标文件已经存在,则 PHP 在 Windows 环境下会出现此类错误。

PHP 5.3 https://bugs.php.net/bug.php?id=48771存在一个已知错误,并带有类似的错误消息。

我建议尝试对您的代码进行以下修改(它基于您的代码,只是进行了一些更正)

$dir = "../../upload_files";
if ($handle = opendir($dir))
{
    while (false !== ($fileName = readdir($handle)))
    {
        if (!isset($count)) $count = 0;
        if ($fileName == ".." || $fileName == ".") continue;
        $newName = str_replace(", ","_",$fileName);
        copy($dir.$fileName, $dir.$newName);
        $count++;
    }
    closedir($handle);
    echo $count." files renamed";
}
于 2013-03-18T01:24:30.587 回答