我有一个脚本来上传文件和数字命名他们(说1-15),当我删除文件(比如说5号)我要的文件进行重命名1-14。如果我删除一个文件9,并在此工作好,如果超过10我删除任何它删除多个文件。据我可以告诉问题不删除而是在重命名

这里是一段脚本我在使用麻烦的:

unlink($path.$img);

$files = natsort(glob("$path/*.jpg"));

$num = 1;

foreach($files as $file) {
  $new = 'photo' . $num . '.jpg'; 
  rename($file, dirname($file).'/'.$new);
  $num++;
}

谢谢!

有帮助吗?

解决方案

从工作实施例php.net

 <?php 
$path = "E:\\SERVER\\sudhir\\songs"; 
$dh = opendir($path); 
$i=1; 
while (($file = readdir($dh)) !== false) { 
    if($file != "." && $file != "..") { 
        echo "<br/>".substr($path."\\".$file, 0,-3)."_mysongs_mp3"; 
        rename($path."\\".$file, substr($path."\\".$file, 0,-3)."_mysongs_mp3"); 
        $i++; 
    } 
} 
closedir($dh); 
?>

其他提示

这是因为你覆盖文件,当您重新命名。

想象一下下面的文件列表,你删除后的文件11:

1
10
12
2
3
4
5
...

如果你现在开始重命名,会发生以下情况:

1 -> 1
10 -> 2
12 -> 3
2 -> already overwritten by 10!

的一个解决方案:使用排序您natsort($files)阵列重命名前

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top