Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Реализовать в php
цитата
18/12/07 в 02:03
 BAD guy
в директории куча папок
в каждой папке файлы jpg и mpg

нужно jpg файлы переименовать в 1.jpg,2.jpg,3.jpg... какое их там количество
и с mpg файлами сделать тоже самое...

т.е. просто их пронумеровать в логической последовательности (в папках они в этой последовательности стоят но имена их не нравятся)
цитата
18/12/07 в 03:42
 Klirik
Total Commander - Ctrl+M
групповое переименование работает и для фтп, в пределах одной папки
цитата
18/12/07 в 09:26
 alt



Ему на сервере надо.


Делаешь так

Код:
$path="path/to/files";
$ext="jpg"; // или "mpg";

$d = dir($path);
$count=1;
while (false !== ($entry = $d->read())) {
    $tmp = explode(".",$entry);
    if($tmp[1] == $ext)
    {
         rename ($path."/".$entry, $path."/".$count.".".$ext);
         $count++;
      }
}
$d->close();


может где ковычки пропустил, а так работать будет
цитата
18/12/07 в 17:15
 BAD guy
alt писал:
может где ковычки пропустил, а так работать будет


спасибо большое! попробую :)
цитата
18/12/07 в 17:40
 dDan
у тебя в папки не залазит
цитата
18/12/07 в 21:02
 BAD guy
dDan писал:
у тебя в папки не залазит


это сам уже... переименовывать как понятия не имел... смикалки не хватило :(
цитата
18/12/07 в 22:38
 Sha
Сам-то сам, только очень внимательно с приведенным решением. В нем принципиальная ошибка.
Найдете сами ?
... Или я ошибаюсь...
цитата
19/12/07 в 01:56
 BAD guy
Sha писал:
Сам-то сам, только очень внимательно с приведенным решением. В нем принципиальная ошибка.
Найдете сами ?
... Или я ошибаюсь...


у меня вот это
$count++;
почему-то срабатывало даже при лжи в if

но я тут помудрил и наклацал что всё так или иначе но работает.
цитата
19/12/07 в 09:08
 alt
В папки точно не залазит это пример для 1 директории,
но... не сложно сделать и для многих папок

Итак, если папки лежат на 1 уровне (не вложенные)
то такое решение:

Выносим вышеприведенный код в функцию

И делаем так

Код:
<?
$path="path/to/dirs";  // путь к директории с папками
$ext="jpg"; // или "mpg";

$d = dir($path);
while (false !== ($entry = $d->read())) {
    $tmp = explode(".",$entry);
    if($entry != ".." && $entry != ".")
    {
        ren($path."/".$enrty,$ext);
    }
}
$d->close();

function ren($path,$ext)
{   
    $d = dir($path);
    $count=1;
    while (false !== ($entry = $d->read())) {
        $tmp = explode(".",$entry);
        if($tmp[1] == $ext)
        {
             rename ($path."/".$entry, $path."/".$count.".".$ext);
             $count++;
        }
    }
    $d->close();
}
?>


Но вот будут ли они пеперименнованны по порядку, это вопрос, т.к. их возможно надо будет сортировать еще по времи создания.

2Sha а где там принципиальная ошибка? очень интересно =)
цитата
19/12/07 в 22:49
 Sha
alt писал:
2Sha а где там принципиальная ошибка? очень интересно =)

Мож я ошибся. Мож и нет ошибки, кроме проблем с файлами с двойным расширением. Типа abc.jpg.html
PS ну а рекурсию чего не реализовал ? Можно углУбить.


Эта страница в полной версии