使用PHP脚本重命名目录

时间:2016-05-16 06:36:29

标签: php batch-rename

我有一个包含

等文件夹的目录
  

baseURL时/ 2-435435435_323423 /   
baseURL时/ 5_435435435_32423 /   
baseURL时/ 3_543543543_2342342 /

现在我想将所有文件夹从原始名称重命名为新名称,即截断最后一部分用' _'。新名称将是

  


baseURL时/ 2-435435435 /   
baseURL时/ 5_435435435 /   
baseURL时/ 3_543543543 /

$path_from = 'E:/documents/';
if(file_exists($path_from)){
    $files = scandir($path_from);
    foreach($files as $key1 => $file) {
        $newName = ? // I need this
        rename($path_from.$file,$path_from.$newName);
    }
}

或者让我知道,如果在Windows中无论如何都没有任何脚本重命名批处理。

3 个答案:

答案 0 :(得分:2)

正如您所提到的仅$newName,只需使用substrstrrpos

strrpos - 查找最后一次出现的字符串

的数字位置
$str = 'baseurl/3_543543543_2342342/';

$pos = strrpos($str, "_");
if ($pos === false){
    //do nothing
}else
    $str = substr($str, 0, $pos)."/";

echo $newName = $str; //baseurl/3_543543543/

答案 1 :(得分:1)

您可以使用strstr

$path_from = 'E:/documents/';
    if(file_exists($path_from)){
        $files = scandir($path_from);
        foreach($files as $key1 => $file) {
            $newName = strstr($file, '_', true);
            rename($path_from.$file,$path_from.$newName);
        }
    }

e.g。

$str = 'baseurl/2-435435435_323423/';
    $imagePreFix = strstr($str, '_', true);
    echo $imagePreFix;

输出:

  

baseURL时/ 2-435435435

答案 2 :(得分:0)

$newName = substr($file, 0, strrpos($file, '_'));