PHP: <?php $dir = "F:\webserver\home\localhost\www\img"; // Открыть заведомо существующий каталог и начать считывать его содержимое if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { $file_renaming=strtolower($file); #print "Файл:".$file."\n"; fopen ($dir."".$file,, 'w') rename ($file,$file_renaming); fclose($file); } closedir($dh); } } ?> Что-то упустил?
PHP: <?php $dir = "F:\webserver\home\localhost\www\img"; // Открыть заведомо существующий каталог и начать считывать его содержимое if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { $file_renaming=strtolower($file); @rename($dir."/".$file, $dir."/".$file_renaming); } closedir($dh); } } ?> По сабжу. Вот как-то себе писал: PHP: <?php $dirName = "C:\WebServers\home\localhost\www\php\die"; $od = opendir($dirName); //добавляем все файлы, находящиеся в заданной директории, в массив while ($currentFile !== false) { $currentFile = readdir($od); $theFiles[] = $currentFile; } //извлекаем файлы, которые соответствуют заданному шаблону $files = preg_grep("/png$|jpg$|pdf$|exe$|doc$|sql$|html$/", $theFiles); //проходим по массиву и переименовываем файлы, которые соответствуют шаблону $i = 1; foreach ($files as $modFiles) { $restOfStr = substr($modFiles, 0, strlen($modFiles) - strlen(strrchr($modFiles, "."))); $replaced = str_replace($restOfStr, $i, $modFiles); $i++; newName ($dirName,$modFiles,$replaced); } function newName($dir,$fileName,$newName) { $newName = trim($newName); $fileName = trim($fileName); $dir = trim($dir); if(@rename($dir."/".$fileName,$dir."/".$newName)) { return TRUE; } else { return FALSE; } } ?> Переименовывает файлы, которые соответствуют шаблону на 1, 2, 3, 4, 5 и т.д.
Если честно, это не мне нужно было, а другу нужно было определенные файлы структурировать в 1, 2, 3, 4...
PHP: if(@rename($dir."/".$fileName,$dir."/".$newName)) { return TRUE; } else { return FALSE; } лишние телодвижения PHP: return rename($dir."/".$fileName,$dir."/".$newName);
PHP: <?php $dir = "F:\webserver\home\localhost\www\img"; // Открыть заведомо существующий каталог и начать считывать его содержимое if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($fileName = readdir($dh)) !== false) { $newName=strtolower($fileName); # rename($dir."\\".$file,$dir."\\".$file_renaming); if(rename($dir."\\".$fileName,$dir."\\".$newName)) { return TRUE; } else { return FALSE; } } closedir($dh); } } ?> Сделал так! Не работает!
serg-php попробуйте писать код не как у кого-то там, а так, чтобы ясно где ошибка. Уточняю, берете код и вставляете в него например вывод текста на экран. Так вы сможете понять до какой строчки все нормально, а где застопоривается. Также хорошо расписывать все ветки условных переходов. То есть код, который после первого же запуска покажет, что неправильно выглядел бы так: PHP: <?PHP $dir = "F:\webserver\home\localhost\www\img"; // Открыть заведомо существующий каталог и начать считывать его содержимое if (is_dir($dir)) { echo 'After checking is_dir'; if ($dh = opendir($dir)) { echo 'After opening dir'; while (($fileName = readdir($dh)) !== false) { $newName=strtolower($fileName); # rename($dir."\\".$file,$dir."\\".$file_renaming); echo 'Try rename'; if(rename($dir."\\".$fileName,$dir."\\".$newName)) { echo 'Renamed!'; return TRUE; } else { echo 'Couldnt rename'; return FALSE; } } closedir($dh); } } else { echo 'Not dir!'; }
Gifts, весьма ценный совет! Это уже тянет на отдельную тему: "Кто и как делает отладку скриптов?" Gifts, использую Ваш вариант. Пишет Renamed! Проверяю папку - файлы не переименованы. PHP: while (($fileName = readdir($dh)) !== false) { echo $fileName; die; выводит точку и все!
serg-php скорее на вопрос - "делает ли хоть кто нибудь отладку?" Внимательный программист бы подумал, что будет делать вызов строки "return TRUE;" в данной программе. Попробуйте это выяснить и решите, что с этой строкой делать.
PHP: <?PHP $dir = "F:\webserver\home\localhost\www\img"; // Открыть заведомо существующий каталог и начать считывать его содержимое if (is_dir($dir)) { echo 'After checking is_dir'; if ($dh = opendir($dir)) { echo 'After opening dir'; while (($fileName = readdir($dh)) !== false) { if (($fileName !== ".") && ($fileName !== "..")) { # $newName=strtolower($fileName); if(rename($dir."\\".$fileName,$dir."\\".$newName)) { return 'renamed'; } else { return 'Couldnt rename'; } } } closedir($dh); } } else { echo 'Not dir!'; } Так не работает?
PHP: $dir = "F:\webserver\home\localhost\www\img"; // Открыть заведомо существующий каталог и начать считывать его содержимое if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($fileName = readdir($dh)) !== false) { $newName=strtolower($fileName); if(rename($dir."\\".$fileName,$dir."\\".$newName)) { echo 'Renamed'; } else { echo 'Couldnt rename'; } } closedir($dh); } } else { echo 'Not dir!'; } Так работает!
PHP: <?php function renamed($dir) { $file_list = ''; if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file !== '.' AND $file !== '..') { $current_file = "{$dir}/{$file}"; if (is_file($current_file)) { $file_renaming=strtolower($file); rename($dir."/".$file, $dir."/".$file_renaming); } } } } } $path = "F:\webserver\home\localhost\www\img"; renamed($path); ?>