3

私はPHPを初めて使用し、user580950がフォルダ内のファイルの一括名前変更(PHP)で尋ねたのと同じようなことをしようとしています。

特定のディレクトリ内のすべてのファイルとディレクトリの名前を繰り返し処理し、スペースをダッシュ​​に置き換え、すべて大文字を小文字に変換する2つのことを行うスクリプトを作成したいと思います。

前述の質問の回答と、必要な関数のPHPマニュアルエントリに基づいて、次のコードを思いつきました。

if ($handle = opendir('/Users/username/Documents/School')) {

    while (false !== ($file_name = readdir($handle))) { 
        $to_lower = strtolower($file_name);
        $add_dashes = str_replace(" ", "-", $to_lower);
        rename($file_name , $add_dashes);
    }

    closedir($handle);
}

このコードは、ターゲットディレクトリ内のすべてのファイル/ディレクトリに対して次のエラーを返します。

警告:rename(THE 273、the-273):8行目の/Users/username/Sites/PHP/rename_files_in_directory.phpにそのようなファイルまたはディレクトリはありません

いろいろな方法で並べ替えてみましたが、どこに問題があるのか​​完全に困惑しています。MacOSX.6.8でPHP5.3.8を実行しています。

助けていただければ幸いです!

4

2 に答える 2

2

スペースをエスケープする必要があります。次を使用して直接名前を変更してみてください。

<?php

if ($handle = opendir('/Users/username/Documents/School')) {

    while (false !== ($file_name = readdir($handle))) { 
        $to_lower = strtolower($file_name);
        $add_dashes = str_replace(" ", "-", $to_lower);
        exec("mv ".escapeshellarg($file_name). " ". $to_lower);
        }

    closedir($handle);
    }
?>
于 2012-09-06T18:31:11.790 に答える
1
$path = '/Users/username/Documents/School';
[...]
rename("$path/$file_name", "$path/$add_dashes");
[...]

また

chdir ('/Users/username/Documents/School');

コードの前に。

于 2012-09-06T18:11:32.727 に答える