使用随机名称重命名文件夹中的所有文件

时间:2016-12-18 15:34:12

标签: php

我想用随机数字或字符重命名文件夹中的所有文件。

这是我的代码:

$dir = opendir('2009111');
$i = 1;
// loop through all the files in the directory
while ( false !== ( $file = readdir($dir) ) ) {
        // do the rename based on the current iteration
        $newName = rand()  . (pathinfo($file, PATHINFO_EXTENSION));
        rename($file, $newName);
        // increase for the next loop
        $i++;
}
// close the directory handle
closedir($dir);

但是我收到了这个错误:

  

警告:重命名(4(2).jpg,8243.jpg):系统找不到指定的文件

1 个答案:

答案 0 :(得分:0)

您正在循环浏览目录2009111/中的文件,但是在rename()中没有目录前缀的情况下引用它们。

这样的事情应该会更好(虽然看到数据丢失的警告):

$oldName = '2009111/' . $file;
$newName = '2009111/' . rand()  . (pathinfo($file, PATHINFO_EXTENSION));

rename($oldName, $newName);

当然,您可能希望将目录名称放在变量中或进行其他类似的调整。我仍然不清楚你为什么要这样做,并且根据你的目标,可能有更好的方法来达到它们。

警告!您使用的方法可能会导致数据丢失!可能会生成与现有文件同名的$newName,{ {3}}覆盖目标文件。

您可能应该确保$newName rename()之前for a in range(1000000): print('{:07d}'.format(a)) [RoutePrefix("api/SystemCheck")] public class SystemCheckController : ApiController { [HttpGet] [Route("")] [Route("EnvironmentValidate")] [RequiresPrivilegeMVC((int)PrivilegeType.SystemCheck)] public IEnumerable<EnvironmentValidation> Get() { return FilteredEnvironmentValidate(); } 没有Get