如何在php中将文件(1).ext重命名为file1.ext

时间:2014-04-05 17:31:22

标签: php escaping file-rename batch-rename

我想使用php的xpdf转换器将pdf文件转换为文本文件。 问题是文件名是文件(1).pdf,文件(2).pdf ...括号是问题.XPDF无法用括号读取文件名。所以我想将名称更改为file1.pdf,file2 .pdf ....(删除括号) 我试图在php中以各种可能的方式使用rename()进行转义,但仍然会遇到两个错误

=系统找不到路径代码2 =目录,文件,卷语法错误或其他...代码123

请有人帮助我。我想用PHP本身来做。

我使用的是......

for($i=1;$i<=$_POST['number'];$i++)
{

    $filen2="\"d:/res/file(".$i.").pdf\"";
    $file="\"d:/res/files".$i.".pdf\"";
    rename($filen2,$file);
    echo "converting file ".$filen2."<br/>";
    shell_exec("D:/xpdf/bin32/pdftotext.exe $file");

} 

和...

for($i=1;$i<=$_POST['number'];$i++)
{

    $filen2="\"d:\\res\\file(".$i.").pdf\"";
    $file="\"d:\\res\\files".$i.".pdf\"";
    rename($filen2,$file);
    echo "converting file ".$filen2."<br/>";
    shell_exec("D:/xpdf/bin32/pdftotext.exe $filen2");

} 

现在我尝试重命名()没有括号的文件...仍然无法正常工作......可能是什么错误?XPDF为没有支架的文件工作没有任何问题

2 个答案:

答案 0 :(得分:3)

使用:

$filename = preg_replace('@\(\d+\)(\.[^.]+)$@isuDUX', '$1', $filename);

答案 1 :(得分:1)

我解决了这个问题。实际上问题出在我的Windows上。其中有af *****病毒导致我无法访问改变PATH变量,打开控制面板等的推荐操作...现在我重新安装Windows并且每件事都像预期一样有效..

rename()的语法是rename(<path to file>,<path to the same file with new name>);

例如将D:\res\file(1).pdf重命名为file1.pdf我使用了以下代码rename('D:/res/file(1).pdf','D:/res/file1.pdf');。它运行得非常好。我也试过rename('D:\\res\\file(1).pdf','D:\\res\\file1.pdf');它也运行良好。希望我早些时候重新安装Windows。