将文件移动到特定文件夹

时间:2012-07-05 14:03:53

标签: php

我有一个关于文件句柄的问题,我有:

文件:  “Mark,123456,HTCOM.pdf”

“John,409721,JESOA.pdf

文件夹:

“Mark,123456”

“Mark,345212”

“Mark,645352”

“John,409721”

“John,235212”

“John,124554”

我需要一个例程来将文件移动到正确的文件夹中。 在上面的例子中,我需要比较文件和文件夹中的第一个和第二个值。如果是相同的我移动文件。

补充发布: 我有这个代码,工作正常但我需要修改以检查名称和代码来移动文件... 我很难实现功能...

$pathToFiles = 'files folder'; 
$pathToDirs  = 'subfolders'; 
foreach (glob($pathToFiles . DIRECTORY_SEPARATOR . '*.pdf') as $oldname) 
{ 
    if (is_dir($dir = $pathToDirs . DIRECTORY_SEPARATOR . pathinfo($oldname, PATHINFO_FILENAME)))
     { 
        $newname = $dir . DIRECTORY_SEPARATOR . pathinfo($oldname, PATHINFO_BASENAME);


        rename($oldname, $newname); 
    } 
}

1 个答案:

答案 0 :(得分:0)

作为粗略草稿,只适用于您的具体案例(或遵循相同命名模式的任何其他案例),这应该有效:

<?php
// define a more convenient variable for the separator
define('DS', DIRECTORY_SEPARATOR);

$pathToFiles = 'files folder';
$pathToDirs = 'subfolders';

// get a list of all .pdf files we're looking for
$files = glob($pathToFiles . DS . '*.pdf');

foreach ($files as $origPath) {
    // get the name of the file from the current path and remove any trailing slashes
    $file = trim(substr($origPath, strrpos($origPath, DS)), DS);

    // get the folder-name from the filename, following the pattern "(Name, Number), word.pdf"
    $folder = substr($file, 0, strrpos($file, ','));

    // if a folder exists matching this file, move this file to that folder!
    if (is_dir($pathToDirs . DS . $folder)) {
        $newPath = $pathToDirs . DS . $folder . DS . $file;
        rename($origPath, $newPath);
    }
}