rename(). Warning. Directory not empty.

iSlayter

Новичок
rename(). Warning. Directory not empty.

Всем привет. Есть папка, внутри неё есть много тысяч подпапок. Все подпапки носят числовые названия. Необходимо те, название которых меньше либо равно 4998 переименовать в i+1. Как это сделать? Пробовал написать скрипт на похапэ, но там вылезает ворнинг "Directory not empty" :(

Подскажите любое возможное решение этой задачи - а то проект один надо запускать а я накосячил с переименовыванием :((((((((((((((((((((((((((((
 

iSlayter

Новичок
PHP:
<?php
define('ABS_PATH', $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR);

ini_set('display_errors',1);
error_reporting(E_ALL);

for ($i = 0; $i < 4998; $i++) {
	var_dump(rename(ABS_PATH . 'uploads/screenshots/' . $i, ABS_PATH . 'uploads/screenshots/' . ($i+1)));
	if ($i > 6) {
		die();
	}
}
Вообщем-то что самое забавное - имяпапки+1 зачастую будет существовать. В папках этих хранятся скриншоты снятые с видеороликов, снимались они ООООООООООЧЕНЬ долго (ооооочень много роликов). Еслиб этот скрипт отработал - что было бы с файлами?

Например он переименовывает папку 6 в папку 7 а папка 7 уже существует - имена файлов в папках СОВПАДАЮТ (0-20.jpg)

как быть!??!?
 

zerkms

TDD infected
Команда форума
переименовывать, начиная с последней? :)
 

iSlayter

Новичок
да, ага я тоже так подумал. только как это сделать? всмысле не руками, а, хотя бы, на php (чтобы не было этого идиотского ворнинга) ? :(
 

Zetruger

ivan.chistyakov.name
да ворнинг внатуре идиотский

еслибы он выдвал вместо Directory not empty
Directory already exists

возможно тыбы быстрее понял, то что, чтобы налить в полный стакан воды, надо его сначала опустошить
 

iSlayter

Новичок
Zetruger сам то понял чо сказал?

zerkms как ренэйм непустой папки сделать, йопт?
 

zerkms

TDD infected
Команда форума
PHP:
var_dump(glob('*'));
var_dump(glob('1/*'));
var_dump(rename('1', '2'));
var_dump(glob('*'));
// array(2) { [0]=>  string(1) "1" [1]=>  string(9) "index.php" } array(1) { [0]=>  string(7) "1/ololo" } bool(true) array(2) { [0]=>  string(1) "2" [1]=>  string(9) "index.php" }
 

Zetruger

ivan.chistyakov.name
> как ренэйм непустой папки сделать, йопт?


iSlayter
))

есть папки

/1/...
/2/...
/3/...
/4/...

ты делаешь

rename('1', '2')

php ругается

Directory not empty

но ругается не на папку 1, ту которую ты хочешь переименовать

а на папку 2, так как она уже существует и не пуста
а значит переименование 1 в 2 , может вызвать потерю данных из папки 2


блин ну неужели все так туго



смотри код zerkms
 
Сверху