Как переименовать файлы?

Тема в разделе "Как сделать...", создана пользователем StrikeOFF, 27 мар 2012.

  1. StrikeOFF

    StrikeOFF ♥kan inte lyfta utan lift♥

    Регистр.:
    20 мар 2010
    Сообщения:
    364
    Симпатии:
    204
    PHP:
    <?php
    $dir1 
    "E:/documents/images/test/dir1";
    $dir2 "E:/documents/images/test/dir2";
    if (
    is_dir($dir1)) {
        if (
    $dh opendir($dir1)) {
            while ((
    $file readdir($dh)) !== false) {
                if((
    $file !== ".")&&($file !== ".."))
                {
             
                    
    $file_array file("E:/documents/images/test/dir2/2.txt");
                        
    $finished false;
                        while(
    $finshed !== false)
                        {
                            while ( list( 
    $line_num$line ) = each($file_array ) )
                            {
                            
    rename($dir1."/".$file$dir2."/".$line); 
                            }
                        } 
                }
            }
            
    closedir($dh);
        }
    }
     
    //Выход:
    //Warning: rename(E:/documents/images/test/dir1/0c030e7655d44a708cac42bf791a8520.jpeg,E:/documents/images/test/dir2/abandonment ) [function.rename]: Синтаксическая ошибка в имени файла, имени папки или метке тома. (code: 123) in Z:\home\lesson.com\www\check.php on line 17
    ?>
    Есть фал в котором каждая новая строка - будущее название файла.
    Есть директория в которой масса файлов.
    Нужно чтобы до тех пор пока в файле 2.txt (есть строки | пока не использовали все строки по 1му разу | пока есть файлы в директории) {переименовывать фалы в имена строк}

    Как то так. Помогите хотя бы сделать чтобы вот этот вариант нормально переименовывал а не один файл как сейчас. На выходе как видно идут вот такие ошибки. на выходе меняется только вторая часть функции - abandonment .
     
  2. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    79
    Попробуй:
    copy()
    unlink()
     
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.522
    Симпатии:
    1.376
    Минимум 2 существенные ошибки: чтение файла в цикле чтения директории;
    нет trim`a для имени файла - перевод каретки недопустим в именовании файлов

    И тот код, что привел ТС, у меня даже с ошибками не пошел, вот рабочий:
    PHP:
    $dir1 'E:/documents/images/test/dir1';
    $dir2 'E:/documents/images/test/dir2';
    if (
    is_dir($dir1)) {
        if (
    $dh opendir($dir1)) {
            
    $file_array file('E:/documents/images/test/dir2/2.txt');
            while ((
    $file readdir($dh)) !== false && count($file_array) > 0) {
                if((
    $file !== ".")&&($file !== ".."))
                {
                    
    $new_file_name trim(array_shift($file_array));
                    
    rename($dir1."/".$file$dir2."/".$new_file_name);
                }
            }
            
    closedir($dh);
        }
    }
    PS: помимо трима, стоит для $new_file_name сделать str_replace недопустимых файловой системой символов.
     
    StrikeOFF нравится это.