[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перемещение каталога по фс
olgatcpip
Здравствуйте.

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

Т.е. я вижу функцию rename, но он перемещает файлики, а хочется то всю папку.
Я понимаю, что нужно написать функцию, которая смотрит/ищет/находит все файлики в старой директории и поочереди перемещает в новую, но Есть готовые решения? А то самой писать, потом тестировать, потом отлаживать..... нет времени ...

Помогите, пожалуйста.



Спустя 5 минут, 15 секунд (24.03.2010 - 13:57) Семён написал(а):
Лучше не перемещать, а копировать smile.gif
А если копировать, то лучше по фтп все операции провернуть smile.gif

Спустя 1 минута, 47 секунд (24.03.2010 - 13:59) krasilich написал(а):

$res = system('mv -R /path/to/dir/need/to/move /path/to/dir/need/to/move/to'); //=)))

Спустя 2 минуты, 26 секунд (24.03.2010 - 14:01) sergeiss написал(а):
А ты не пробовала применять rename к каталогу, содержащему нужные тебе файлы? Я не знаю, будет ли работать, не проверял. Но почему бы и нет?

Спустя 4 минуты, 9 секунд (24.03.2010 - 14:05) olgatcpip написал(а):
sergeiss, это первое что я попробовала. часик точно пыталась его уговорить... и со слешем и без.... и уже создавала предварительно папки.... всяко ублажала...

Спустя 12 минут, 31 секунда (24.03.2010 - 14:18) olgatcpip написал(а):
krasilich да, замечательно, но, к сожалению в винде вроде так незя....
или я ошибаюсь?

Спустя 14 секунд (24.03.2010 - 14:18) krasilich написал(а):

function move($path_in, $path_out)
{
$path_in = trim($path_in, '/');
$path_out = trim($path_out, '/');

$dh = opendir($path_in);
while($dr = readdir($dh))
{
if(is_dir($dr))
move($path_in.DIRECTORY_SEPARATOR.$dr, $path_out.DIRECTORY_SEPARATOR.$dr);

!
copy($path_in.DIRECTORY_SEPARATOR.$dr, $path_out.DIRECTORY_SEPARATOR.$dr) ||
unlink($path_in.DIRECTORY_SEPARATOR.$dr)
}
}



Функция с коленки, не тестировал.

Спустя 8 минут, 33 секунды (24.03.2010 - 14:27) olgatcpip написал(а):
Я тут накатала в рамках конкретно моей задачки покатит
	if(!is_dir($FileDirNEW))
mkdir($FileDirNEW,0777,true);

foreach (glob($FileDirOLD.'*') as $filename){
$bname = basename($filename);
if(!rename($FileDirOLD.$bname,$FileDirNEW.$bname))
$error[] = 'NO перемещение с ошибками: '.$FileDirOLD.$bname.' => '.$FileDirNEW.$bname;
}
rmdir($FileDirOLD);
Но хочется универсальности Если есть у кого решение с рекрсивным перемещением и/или с RecursiveDirectoryIterator, очень хочу посмотреть

Спустя 1 минута, 35 секунд (24.03.2010 - 14:28) olgatcpip написал(а):
krasilich у меня тоже с коленки... но твой поинтересней будет smile.gif

Спустя 1 час, 12 минут, 27 секунд (24.03.2010 - 15:41) krasilich написал(а):
Тот вариант не рабочий, этот рабочий но не идеальный. Пустые папки не перемещает, просто удаляет. Сыпеться ошибками, если что-то не то с правами доступа. Вообщем требует напильника=)

function move($path_in, $path_out)
{
if(!is_dir($path_in)) return;

$dh = opendir($path_in);

while($dr = readdir($dh))
{
if($dr == '.' || $dr == '..') continue;

if(is_file($path_in.DIRECTORY_SEPARATOR.$dr))
{
is_dir($path_out.DIRECTORY_SEPARATOR.$dr) || @mkdir($path_out.DIRECTORY_SEPARATOR, 0777, true);
!
copy($path_in.DIRECTORY_SEPARATOR.$dr, $path_out.DIRECTORY_SEPARATOR.$dr) || unlink($path_in.DIRECTORY_SEPARATOR.$dr);
}

if(is_dir($path_in.DIRECTORY_SEPARATOR.$dr))
move($path_in.DIRECTORY_SEPARATOR.$dr, $path_out.DIRECTORY_SEPARATOR.$dr);
}
rmdir($path_in);
}

Спустя 4 минуты, 46 секунд (24.03.2010 - 15:45) olgatcpip написал(а):
хорошо, спасибо


_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

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