重命名指定目录中的所有图像
rename all the images in a specified directory
我有大约 600 张图像,我想用一个小 PHP 代码重命名
These are the image files
我已经尝试了下面的 link 并根据自己的需要对其进行了修改:
<?php
$dir = 'C:/xampp/htdocs/rename/fotos/all_fotos';
$file = opendir($dir);
$data = readdir($file);
if(is_dir($dir)){
echo $dir . '</br>';
echo $file . '</br>';
echo $data . '</br>';
while(($data = readdir($file)) !== false){
$info = pathinfo($data, PATHINFO_EXTENSION);
if($info=='jpg'){
if(strlen($data)==5){
rename($data, $dir . $data = 3 . substr($data, 0, -4) . '.jpg');
}else if(strlen($data)==6){
rename($data, $dir . $data = substr($data, 0, -4) . '.jpg');
}else{
echo "renaming didn't work, please try again <br/>";
}
}else{
echo 'selected file is not a .jpg extension <br/>';
echo basename(pathinfo($data, PATHINFO_BASENAME),'.jpg') . '</br>';
}
}echo $info;
}else{
echo dirname($dir) . 'wrong directory </br>';
}
closedir($file);
?>
预期结果例如:“12340”变为“31234”,如果长度为 6,例如:“123450”应该变为“12345”,但是第二个 "echo $file" 在第一个 if() 部分 returns a "Resource ID #3"
The current output
使用 echo 和 var_dump() 更清楚地了解输出可能会很有趣。第一点:rename() 函数的两个参数都需要完整路径(参见官方文档:https://www.php.net/manual/fr/function.rename.php). Second : to get the string-name of the file, you need the basename() function (https://www.php.net/manual/fr/function.basename.php)。第三点:您没有在 strlen...=5 或 strlen...=6 中考虑扩展名“.jpg”。最后一点:使用目录的相对路径(相对于您的 php 重命名脚本):
//$dir = 'C:/xampp/htdocs/rename/fotos/all_fotos';
$dir = __DIR__.'/renameimg';
$file = opendir($dir);
$data = readdir($file);
if(is_dir($dir)){
echo '</br>dir : '.$dir;
echo '</br>file : '.$file;
echo '</br>data : '.$data;
while(($data = readdir($file)) !== false){
echo "<br/>";
var_dump($data);
if(is_dir("$dir/$data"))
echo "<br/>Directory: ".$data;
else if(is_file("$dir/$data"))
echo "<br/>File: ".$data;
$info = pathinfo($data, PATHINFO_EXTENSION);
if($info=='jpg'){
$filename = basename($data);
echo "<br/>data length : ". strlen($data);
echo "<br/>filename=basename(data) length : ". strlen($filename);
if(strlen($filename)==9){
rename("$dir/$data", "$dir/3".substr($filename, 0, -4) . '.jpg');
}else if(strlen($filename)==10){
rename("$dir/$data", "$dir/".substr($filename, 0, -4) . '.jpg');
}else{
echo "<br/>Length is not 5 or 6 : renaming didn't work !";
}
}else{
echo 'selected file is not a .jpg extension <br/>';
echo basename(pathinfo($data, PATHINFO_BASENAME),'.jpg').'</br>';
}
}echo $info;
}else{
echo dirname($dir) . 'wrong directory </br>';
}
closedir($file);
我有大约 600 张图像,我想用一个小 PHP 代码重命名
These are the image files
我已经尝试了下面的 link 并根据自己的需要对其进行了修改:
<?php
$dir = 'C:/xampp/htdocs/rename/fotos/all_fotos';
$file = opendir($dir);
$data = readdir($file);
if(is_dir($dir)){
echo $dir . '</br>';
echo $file . '</br>';
echo $data . '</br>';
while(($data = readdir($file)) !== false){
$info = pathinfo($data, PATHINFO_EXTENSION);
if($info=='jpg'){
if(strlen($data)==5){
rename($data, $dir . $data = 3 . substr($data, 0, -4) . '.jpg');
}else if(strlen($data)==6){
rename($data, $dir . $data = substr($data, 0, -4) . '.jpg');
}else{
echo "renaming didn't work, please try again <br/>";
}
}else{
echo 'selected file is not a .jpg extension <br/>';
echo basename(pathinfo($data, PATHINFO_BASENAME),'.jpg') . '</br>';
}
}echo $info;
}else{
echo dirname($dir) . 'wrong directory </br>';
}
closedir($file);
?>
预期结果例如:“12340”变为“31234”,如果长度为 6,例如:“123450”应该变为“12345”,但是第二个 "echo $file" 在第一个 if() 部分 returns a "Resource ID #3"
The current output
使用 echo 和 var_dump() 更清楚地了解输出可能会很有趣。第一点:rename() 函数的两个参数都需要完整路径(参见官方文档:https://www.php.net/manual/fr/function.rename.php). Second : to get the string-name of the file, you need the basename() function (https://www.php.net/manual/fr/function.basename.php)。第三点:您没有在 strlen...=5 或 strlen...=6 中考虑扩展名“.jpg”。最后一点:使用目录的相对路径(相对于您的 php 重命名脚本):
//$dir = 'C:/xampp/htdocs/rename/fotos/all_fotos';
$dir = __DIR__.'/renameimg';
$file = opendir($dir);
$data = readdir($file);
if(is_dir($dir)){
echo '</br>dir : '.$dir;
echo '</br>file : '.$file;
echo '</br>data : '.$data;
while(($data = readdir($file)) !== false){
echo "<br/>";
var_dump($data);
if(is_dir("$dir/$data"))
echo "<br/>Directory: ".$data;
else if(is_file("$dir/$data"))
echo "<br/>File: ".$data;
$info = pathinfo($data, PATHINFO_EXTENSION);
if($info=='jpg'){
$filename = basename($data);
echo "<br/>data length : ". strlen($data);
echo "<br/>filename=basename(data) length : ". strlen($filename);
if(strlen($filename)==9){
rename("$dir/$data", "$dir/3".substr($filename, 0, -4) . '.jpg');
}else if(strlen($filename)==10){
rename("$dir/$data", "$dir/".substr($filename, 0, -4) . '.jpg');
}else{
echo "<br/>Length is not 5 or 6 : renaming didn't work !";
}
}else{
echo 'selected file is not a .jpg extension <br/>';
echo basename(pathinfo($data, PATHINFO_BASENAME),'.jpg').'</br>';
}
}echo $info;
}else{
echo dirname($dir) . 'wrong directory </br>';
}
closedir($file);