Xwab
Форумыnavigate_nextПрограммирование на PHP

массовая переименовка
Сообщения
Sharky

Вот никак не могу осилить скрипт массовой переименовки файлов-не пойму в чем проблема.пользуюсь таким кодом.файл переименовщик лежит рядом с файлами в той же директории

<?php

$mdir='/'; //пaпкa, в кoтopoй лeжaт фaйлы

$r1='Mandingo'; //чтo мeняeм

$r2='test'; //нa чтo

//-- её величество Фyнкция --//

function mass_rename($dir,$r1,$r2) {

$opdir=opendir($dir);

while ($a=readdir($opdir)) {

if ($a=='.' or $a=='..') continue;

if (is_file($dir.'/'.$a)) {

$b=str_replace($r1,$r2,$a);

rename($dir.'/'.$a,$dir.'/'.$b); }

else {

mass_rename($dir.'/'.$a,$r1,$r2); } }

closedir($opdir);

return $dir; }

//-- применяю --//

mass_rename($mdir,$r1,$r2);

echo 'Done';

?>
функцию взял на 4мас.ру

16 Окт 2010, 23:22
Fashion

$_SERVER['DOCUMENT_ROOT'] в $mdir

16 Окт 2010, 23:44
Sharky

спасибо,помогло.а если файл в подпапке находится,как правильно путь написать.а то я мучался ничего не помогало.писать путь относительно php файла переименовщика?

16 Окт 2010, 23:59
Sharky

У меня теперь не только в этой папке файлы переименовались но и на всем хосте...ппц

17 Окт 2010, 2:06
OpenSource

glob( '/абсолютный путь/*.* , GLOB_BRACE );
и никаие пляски с проверками на уход выще не нужны

17 Окт 2010, 23:37
suhonok

<?php
$mdir='files1/'; //пaпкa, в кoтopoй лeжaт фaйлы
$name = 'a'; //чтo мeняeм
$new = 'A'; //нa чтo
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($mdir) );
foreach ($files as $element){
$patch = pathinfo($element);
$NewName = str_replace($name, $new, $patch['basename']);
rename($element, $patch['dirname'].'/'.$NewName);
}
?>

17 Окт 2010, 23:54
Sharky

suhonok, а если файлы лежат в той же папке то писать имя папки или оставить просто / ? Я уже побаиваюсь пути наугад ставить тк.боюсь груз потом повредить у меня 5гигов все в ручную лил...хорошо хоть в прошлый раз скрипт переименовать только видосы успел а не игры и проги гг)

18 Окт 2010, 16:35
Ответить на тему