我想重命名一些我已经事先读取和排序的文件。但不幸的是,PHP脚本可以运行,但是文件未重命名。知道为什么。路径正确。我还确保使用chmod对每个文件都具有权限。
<?php
$directory = ($_POST['path']);
$filecount = 0;
$files = glob($directory . "*");
if ($files){
$filecount = count($files);
}
$allDetails = explode("/", $directory);
$regNo=($allDetails[1]);
$files = array();
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if(($file != ".") and ($file != "..")) {
$files[] = $file; // put in array.
}
}
natsort($files); // sort.
$i = 0;
$no = 1;
foreach($files as $file) {
chmod($file, 0777);
if($i==0){
$newName = $regNo."_BOUND_TOP_R.tif";
rename($directory.$file, $newName);
}else if($i==1){
$newName = $regNo."_BOUND_TOP_V.tif";
rename($file, $newName);
}else if($i==$filecount-2){
$newName = $regNo."_BOUND_BOTTOM_R.tif";
rename($file, $newName);
}else if($i==$filecount-1){
$newName = $regNo."_BOUND_BOTTOM_V.tif";
rename($file, $newName);
}else if($i%2 == 0){
$newName = $regNo."_f0000"+$no+"R.tif";
rename($file, $newName);
$no++;
} else if($i%2 == 1){
$newName = $regNo."_f0000"+$no+"V.tif";
rename($file, $newName);
$no++;
}
$i++;
}
closedir($handle);
}
?>
这是我得到的错误:
Warning: rename(00002-scan_2019-11-19_09-34-37l.tif,R40_BOUND_TOP_V.tif): No such file or directory in /var/www/html/CanvasCreator/renameImages.php on line 40
答案 0 :(得分:0)
您似乎忘记了将文件夹名称放在其他if语句中,而只在第一个if语句中引用$ directory:
if($i==0){
$newName = $regNo."_BOUND_TOP_R.tif";
// Does this one work? It has $directory.
rename($directory.$file, $newName);
}else if($i==1){
// but the rest do not
$newName = $regNo."_BOUND_TOP_V.tif";
rename($file, $newName);
}else if($i==$filecount-2){
$newName = $regNo."_BOUND_BOTTOM_R.tif";
rename($file, $newName);
}else if($i==$filecount-1){
$newName = $regNo."_BOUND_BOTTOM_V.tif";
rename($file, $newName);
}else if($i%2 == 0){
$newName = $regNo."_f0000"+$no+"R.tif";
rename($file, $newName);
$no++;
} else if($i%2 == 1){
$newName = $regNo."_f0000"+$no+"V.tif";
rename($file, $newName);
$no++;
}
$i++;
}
,然后根据jibsteroos的评论,将连接器固定为.
,而不是+
:
$newName = $regNo."_f0000"+$no+"V.tif";
应该是
$newName = $regNo . '_f0000' . $no . 'V.tif';