1

...そしてもちろん、.ext を使用すると、元の拡張子が保持されます!

今、この質問は以前に尋ねられましたが、奇妙なことに、答えはリモートでも機能しません. 私にとって、それはです。

今、私はこれから始めました:

$directory = $_SERVER['DOCUMENT_ROOT'].$fileFolder.'/';
$i = 1; 
$handler = opendir($directory);
while ($file = readdir($handler)) {
    if ($file != "." && $file != "..") {
        $newName = $i . '.jpg';
        rename($file, $newName);
        $i++;
    }
}
closedir($handler);

私にはかなり簡単に思えますが、ファイルの名前が変更されることはありません...何が問題なのか手がかりはありますか? または単なる作業スニペット... :D

4

3 に答える 3

8

名前を変更するときは、現在歩いているディレクトリに関連するファイル名ではなく、完全な相対/絶対名が必要です。ただしreaddir()、歩いているディレクトリに相対的なファイル名のみを返します。

$directory = $_SERVER['DOCUMENT_ROOT'].$fileFolder.'/';
$i = 1; 
$handler = opendir($directory);
while ($file = readdir($handler)) {
    if ($file != "." && $file != "..") {
        $newName = $i . '.jpg';
        rename($directory.$file, $directory.$newName); // here; prepended a $directory
        $i++;
    }
}
closedir($handler);
于 2013-06-05T14:15:09.220 に答える
1

readdir()スキャンしているディレクトリのファイル名のみを返します。スクリプトを実行しているディレクトリのサブディレクトリを開いたので、そのサブディレクトリを名前変更呼び出しに含める必要があります。

    rename($directory . $file, $directory . $newName);
于 2013-06-05T14:16:12.783 に答える
1
<?
$dir = opendir('test');
$i = 1;

// loop through all the files in the directory
while (false !== ($file = readdir($dir)))
{
    // if the extension is '.jpg'
    if (strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'jpg')
    {
        // do the rename based on the current iteration
        $newName = 'test/'. $i . '.jpg';
        $new = 'test/'.$file;
        rename($new, $newName);

        // increase for the next loop
        $i++;
    }
}

// close the directory handle
closedir($dir);
?>
www.codeprojectdownload.com
于 2013-10-05T05:58:43.627 に答える