重命名文件夹中的所有文件

时间:2016-05-05 19:12:38

标签: php rename batch-rename

我一直在尝试重命名我网站上某个文件夹中的所有文件(图像),但它不起作用。文件未重命名。

我有'name'的输入字段我想使用该名称,添加uniqid并重命名所有文件。 这是我正在使用的代码:

<?php
if(isset($_POST['submit2'])){
$name = $_POST['name'];
$directory = glob("../basic_images/*.*");
{
if ($file != "." && $file != "..") {

    $newName = uniqid().$name;

    rename($directory.$file, $directory.$newName);
}}}
?>

此外,我真的需要_Post $ name变量吗?

P.S。我想重命名所有文件,然后将它们复制到另一个文件夹。

2 个答案:

答案 0 :(得分:0)

您无需发布name

glob返回包含路径的文件夹中的每个文件// example /basic_images/test.jpg

然后你只需要foreach循环遍历文件,并更新其名称。

$path = "../basic_images/";
$directory = glob($path,"*.*");
foreach($directory as $file){
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    $newName = uniqid().$ext;
    rename($file, $path.$newName);
} 

详细了解globhttp://php.net/manual/en/function.glob.php

答案 1 :(得分:0)

所以,我终于解决了这个问题。现在,我只是使用新名称创建新文件的副本,而不是重命名原始文件,然后将它们复制到另一个文件夹。

这是适用于我的代码最终代码:

if(isset($_POST['submit'])){

$path = "../posts_images/";
$files = glob("../basic_images/*.*");
foreach($files as $file){
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    $name = $_POST['new_name'];
    $pic = uniqid().$name;
    $newName = $pic.'.'.$ext;
    copy($file, $path.$newName);

}}

使用$pic.'.'.$ext很重要,因为没有它,新文件就没有任何扩展名。