用PHP来重命名文件夹中的所有文件(Using php to rename all files in

2019-06-27 00:58发布

新的PHP程序员在这里。 我一直在试图通过更换扩展到一个文件夹中的所有文件重命名。

我正在使用的代码是在回答关于SO类似的问题。

if ($handle = opendir('/public_html/testfolder/')) {
while (false !== ($fileName = readdir($handle))) {
    $newName = str_replace(".php",".html",$fileName);
    rename($fileName, $newName);
}
closedir($handle);

}

运行该代码时,我没有错误,但没有改变的文件名进行。

为什么这任何有识之士不工作? 我的权限设置应该允许它。

提前致谢。

编辑:检查重命名(),现在正试图与水珠(),它可能比执行opendir一个更好的选择的东西...的返回值时,我得到一个空白页?

编辑2:随着第二代码片断之下,我可以打印$ newfiles的内容。 所以数组存在,但str_replace函数+重命名()片段失败来改变文件名。

$files = glob('testfolder/*');


foreach($files as $newfiles) 
    {

    //This code doesn't work:

            $change = str_replace('php','html',$newfiles);
    rename($newfiles,$change);

           // But printing $newfiles works fine
           print_r($newfiles);
}

Answer 1:

你可能在错误的目录工作。 确保前缀$文件名和$了newName与目录。

特别是,执行opendir和readdir的不沟通就当前工作目录重命名的任何信息。 READDIR只返回文件的名称,而不是它的路径。 所以你只需通过文件名来命名。

像下面的东西应该更好的工作:

$directory = '/public_html/testfolder/';
if ($handle = opendir($directory)) { 
    while (false !== ($fileName = readdir($handle))) {     
        $newName = str_replace(".php",".html",$fileName);
        rename($directory . $fileName, $directory . $newName);
    }
    closedir($handle);
}


Answer 2:

下面是简单的解决方案:

PHP代码:

// your folder name, here I am using templates in root
$directory = 'templates/';
foreach (glob($directory."*.html") as $filename) {
    $file = realpath($filename);
    rename($file, str_replace(".html",".php",$file));
}

上面的代码转换所有.html文件.php



Answer 3:

你确定

opendir($directory)

作品? 你检查了吗? 因为它看起来可能有一些文档根在这里失去了...

我会尝试

$directory = $_SERVER['DOCUMENT_ROOT'].'public_html/testfolder/';

然后Telgin的解决方案:

if ($handle = opendir($directory)) { 
    while (false !== ($fileName = readdir($handle))) {     
        $newName = str_replace(".php",".html",$fileName);
        rename($directory . $fileName, $directory . $newName);
    }
    closedir($handle);
}


Answer 4:

如果文件被打开情况。 那么PHP不能做对文件进行任何更改。



Answer 5:

<?php
$directory = '/var/www/html/myvetrx/media/mydoc/';
if ($handle = opendir($directory)) { 
    while (false !== ($fileName = readdir($handle))) {
        $dd = explode('.', $fileName);
        $ss = str_replace('_','-',$dd[0]);
        $newfile = strtolower($ss.'.'.$dd[1]);
        rename($directory . $fileName, $directory.$newfile);
    }
    closedir($handle);
}
?>

非常感谢你的建议。 它的工作对我来说!



文章来源: Using php to rename all files in folder
标签: php file rename