我是PHP的新手,我正在尝试做类似于user580950在Bulk Rename Files in a Folder - PHP询问的内容。
我想编写一个脚本来迭代给定目录中所有文件和目录的名称,然后做两件事:用破折号替换空格并将所有大写字母转换为小写。
根据上述问题的答案以及所需功能的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);
}
此代码为目标目录中的每个文件/目录返回以下错误:
警告:重命名(THE 273,-273):中没有此类文件或目录 第8行/Users/username/Sites/PHP/rename_files_in_directory.php
我尝试过以各种方式重新安排事情,而且我完全不知道问题出在哪里。我在Mac OSX.6.8上运行PHP 5.3.8。
非常感谢帮助!
答案 0 :(得分: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);
}
?>
答案 1 :(得分:1)
$path = '/Users/username/Documents/School';
[...]
rename("$path/$file_name", "$path/$add_dashes");
[...]
或
chdir ('/Users/username/Documents/School');
在您的代码之前。