8.х Как скопировать папку (директорию) ?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем koder, 19 янв 2010.

  1. TopicStarter Overlay
    koder
    Offline

    koder

    Регистрация:
    2 дек 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Помогите разобраться, плиз...

    Есть, например, папка "D:\Хлам\Книги". В ней хранятся как файлы, так и еще всякие папки.
    Как программно скопировать ее в другое место ?

    А ниже приведенный код не работает: пишет, "Ошибка доступа к файлу"
    Код:
    КопироватьФайл("D:\Хлам\Книги","F:\Книги");
    
    
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    А если просто
    КомандаСистемы("copy D:\1 c:\2");
    т.е. вызвать командную строку
  3. TopicStarter Overlay
    koder
    Offline

    koder

    Регистрация:
    2 дек 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Неа, никак не получается...

    Тока файлы, а папки не хотят копироваться... :unsure:

    Может еще кто подскажет ???
  4. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    так может и действительно не хватает прав на файлах в каталоге?
  5. TopicStarter Overlay
    koder
    Offline

    koder

    Регистрация:
    2 дек 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Вообщем так:

    В папке "c:\1\" лежат папка "Новая" и файлик "335.txt"

    Запускаю команду:
    Код:
    КомандаСистемы("copy c:\1\*.* d:\*.*")
    
    
    Результат:

    На диске D тока текстовый файлик
  6. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    copy только файлы и копирует, используйте xcopy. А вообще, на 1с написать функцию копирующую каталог со всем содержимым дело пяти минут.
  7. TopicStarter Overlay
    koder
    Offline

    koder

    Регистрация:
    2 дек 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    И то верно, написал функцию.. Причем, оказалось проще, т.к. была известна структура каталогов

    :unsure:
  8. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Структура тут значения не имеет, а если она достаточно большая, то только увеличит код. Если не заморачиваться на различных проверках (типа проверки возможности построения пути назначения), то рабочая процедура, примерно, такая будет:
    Код:
    Процедура КопироватьСодержимоеКаталога(Откуда, Куда)
    КаталогНазначения = Новый Файл(Куда);
    Если КаталогНазначения.Существует() Тогда
    Если КаталогНазначения.ЭтоФайл() Тогда
    УдалитьФайлы(КаталогНазначения.ПолноеИмя);
    СоздатьКаталог(Куда);
    КонецЕсли;
    Иначе
    СоздатьКаталог(Куда);
    КонецЕсли;
    Файлы = НайтиФайлы(Откуда, "*.*");
    Для Каждого Файл Из Файлы Цикл
    Если Файл.ЭтоКаталог() Тогда
    КопироватьСодержимоеКаталога(Файл.ПолноеИмя, Куда+"\"+Файл.Имя);
    Иначе
    КопироватьФайл(Файл.ПолноеИмя, Куда+"\"+Файл.Имя);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    

Поделиться этой страницей