[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка файлов по папкам смотря какой формат
ParadigmX
Помогите пожалуйста реализовать скрипт сортировки файлов по папкам,
допустим есть каталог \TestFile
В нем много файлов разных форматов .jpg, .zip, .mp4 итд.
нужно их разбросать по папкам с именами относительно форматов JPG, ZIP, MP4.
Как это реализовать в коде?
Миша
Получаем список файлов, потом проходим по этому массиву, сразу получаем расширение файлов, записываем расширение файлов в массив, убираем повторяющиеся значения, создаём каталоги под файлы.

Осуществляем проход по первому массиву копируем файл, если нужно переместить файл, то старый файл удалить

_____________
Принимаю заказы, писать в ЛС
ParadigmX
Цитата (Медведь @ 28.08.2016 - 07:07)
Получаем список файлов, потом проходим по этому массиву, сразу получаем расширение файлов, записываем расширение файлов в массив, убираем повторяющиеся значения, создаём каталоги под файлы.

Осуществляем проход по первому массиву копируем файл, если нужно переместить файл, то старый файл удалить

Спасибо, но я не понимаю как переместить сразу несколько файлов я понимаю как один но как неизвестное число?
Миша
Пройдите по ссылкам и прочитайте - станет понятнее, а потом уже спрашивайте что останется непонятным.

Цитата
я не понимаю как переместить сразу несколько файлов я понимаю как один но как неизвестное число

У вас получится массив по которому потом пройдёт скрипт и скопирует или переместит куда нужно.

_____________
Принимаю заказы, писать в ЛС
ParadigmX
Цитата (Медведь @ 28.08.2016 - 11:45)
Пройдите по ссылкам и прочитайте - станет понятнее, а потом уже спрашивайте что останется непонятным.

Цитата
я не понимаю как переместить сразу несколько файлов я понимаю как один но как неизвестное число

У вас получится массив по которому потом пройдёт скрипт и скопирует или переместит куда нужно.

$dir = '/TestFile';
$files = scandir($dir, 1);
$arr = array("Что сдесь должно быть - $files ? или розширения типа zip, jpg итд или как?");
foreach ($arr as $value) { // как этип воспользоватся? вместо $value - $files или..?

//}


function getExtension1($filename) {
return end(explode(".", $filename)); // работает только с одним файлом как воспользоватся не пойму
}
mkdir("/TestFile/$filename", 0700); //тоже не пойму как оно должно создать много папок ((((
// дальше уже не могу представить


если можеш дай пример кода пожалуйста :rolleyes:
Миша
Я сейчас немного занят, если сам не разберёшься и мужики не подскажут, вечером посмотрю.

_____________
Принимаю заказы, писать в ЛС
ParadigmX
Цитата (Медведь @ 28.08.2016 - 12:16)
Я сейчас немного занят, если сам не разберёшься и мужики не подскажут, вечером посмотрю.

Спасибо большое я то сам попробую постараюсь разобраться, может еще раз погуглю подобное найду )
Another Reality

$files = scandir('./TestFile');
$types = [];

foreach($files as $key => $filename)
{
$tmp_type = end(explode(".", $filename));

if(!in_array($tmp_type, $types))
{
$types[] = $tmp_type;

if(!file_exists('./TestFile/' . $tmp_type))
mkdir('./TestFile/' . $tmp_type);
}

@rename('./TestFile/' . $filename, './TestFile/' . $tmp_type . '/' . $filename);
}
ParadigmX
Цитата (Another Reality @ 28.08.2016 - 13:00)

$files = scandir('./TestFile');
$types = [];

foreach($files as $key => $filename)
{
$tmp_type = end(explode(".", $filename));

if(!in_array($tmp_type, $types))
{
$types[] = $tmp_type;

if(!file_exists('./TestFile/' . $tmp_type))
mkdir('./TestFile/' . $tmp_type);
}

@rename('./TestFile/' . $filename, './TestFile/' . $tmp_type . '/' . $filename);
}

Спасибо большое, теперь буду тестить )))
Another Reality
Цитата (ParadigmX @ 29.08.2016 - 01:23)

Спасибо большое, теперь буду тестить )))

Пожалуйста.
ParadigmX
Цитата (ParadigmX @ 29.08.2016 - 01:23)
Цитата (Another Reality @ 28.08.2016 - 13:00)

$files = scandir('./TestFile');
$types = [];

foreach($files as $key => $filename)
{
    $tmp_type = end(explode(".", $filename));

    if(!in_array($tmp_type, $types))
    {
        $types[] = $tmp_type;

        if(!file_exists('./TestFile/' . $tmp_type))
            mkdir('./TestFile/' . $tmp_type);
    }

    @rename('./TestFile/' . $filename, './TestFile/' . $tmp_type . '/' . $filename);
}

Спасибо большое, теперь буду тестить )))

У меня старій Php
Он не понимает
 $types = [];
:(
Как исправит?
ParadigmX
Цитата (Another Reality @ 28.08.2016 - 13:00)
<pre class="sh_sourceCode" rel="php">
<span class="sh_variable">$files</span> <span class="sh_symbol">=</span> <span class="sh_function">scandir</span><span class="sh_symbol">(</span><span class="sh_string">'./TestFile'</span><span class="sh_symbol">);</span>
<span class="sh_variable">$types</span> <span class="sh_symbol">= [];</span>

<span class="sh_control">foreach</span><span class="sh_symbol">(</span><span class="sh_variable">$files</span> <span class="sh_control">as</span> <span class="sh_variable">$key</span> <span class="sh_symbol">=></span> <span class="sh_variable">$filename</span><span class="sh_symbol">)</span>
<span class="sh_cbracket">{</span>
    <span class="sh_variable">$tmp_type</span> <span class="sh_symbol">=</span> <span class="sh_function">end</span><span class="sh_symbol">(</span><span class="sh_function">explode</span><span class="sh_symbol">(</span><span class="sh_string">"."</span><span class="sh_symbol">,</span> <span class="sh_variable">$filename</span><span class="sh_symbol">));</span>

    <span class="sh_control">if</span><span class="sh_symbol">(!</span><span class="sh_function">in_array</span><span class="sh_symbol">(</span><span class="sh_variable">$tmp_type</span><span class="sh_symbol">,</span> <span class="sh_variable">$types</span><span class="sh_symbol">))</span>
    <span class="sh_cbracket">{</span>
        <span class="sh_variable">$types</span><span class="sh_symbol">[] =</span> <span class="sh_variable">$tmp_type</span><span class="sh_symbol">;</span>

        <span class="sh_control">if</span><span class="sh_symbol">(!</span><span class="sh_function">file_exists</span><span class="sh_symbol">(</span><span class="sh_string">'./TestFile/'</span> <span class="sh_symbol">.</span> <span class="sh_variable">$tmp_type</span><span class="sh_symbol">))</span>
            <span class="sh_function">mkdir</span><span class="sh_symbol">(</span><span class="sh_string">'./TestFile/'</span> <span class="sh_symbol">.</span> <span class="sh_variable">$tmp_type</span><span class="sh_symbol">);</span>
    <span class="sh_cbracket">}</span>

    @<span class="sh_function">rename</span><span class="sh_symbol">(</span><span class="sh_string">'./TestFile/'</span> <span class="sh_symbol">.</span> <span class="sh_variable">$filename</span><span class="sh_symbol">,</span> <span class="sh_string">'./TestFile/'</span> <span class="sh_symbol">.</span> <span class="sh_variable">$tmp_type</span> <span class="sh_symbol">.</span> <span class="sh_string">'/'</span> <span class="sh_symbol">.</span> <span class="sh_variable">$filename</span><span class="sh_symbol">);</span>
<span class="sh_cbracket">}</span>
</pre>

У меня старый Php
Он не понимает :(
$types = [];

Как исправить на array?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.