Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как скопировать целый каталог  [new]
Jimy
Member

Откуда:
Сообщений: 261
Можно ли Фоксом скопировать каталог?
2 мар 05, 15:54    [1356879]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
lo-pata
Member

Откуда: Киев
Сообщений: 155
Берешь GetDir() - указать нужный каталог, потом ADIR() - пишешь имена всех файлов в этом каталоге в массив. Дальше в нужном месте создаешь каталог при помощи MD и пишешь в него файлы в цикле при помощи COPY от 1 и до кол-ва элементов массиве, полученном в ADIR().
2 мар 05, 16:00    [1356909]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Посмотри здесь

http://kodu.neti.ee/~juri4/vfpplus/vbs_fso_05_ru.htm#Copy
2 мар 05, 16:38    [1357137]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
bobit
Member

Откуда:
Сообщений: 20
ВладимирМ
Посмотри здесь

Посмотреть не удалось. "Эта страница сейчас недоступна." пишет.
Не важно.
Важно другое. Помимо ADir и GetDir имеют место быть низкоуровневые функции. Ну там fopen, fcreate, fclose и проч.
Составляем текст командного файла. Записываем этот текст в созданный Фоксом файл. Исполняем ran-ом созданный файл.
Глупо? Глупо, согласен. Но ведь вариант же!
2 мар 05, 23:10    [1358131]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
Дмитрий Маликов
Member

Откуда: Новосибирск
Сообщений: 179
используя Win32Api - SHFileOperation
3 мар 05, 06:14    [1358315]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
Ilhom_uz
Member

Откуда:
Сообщений: 212
lo-pata
Берешь GetDir() - указать нужный каталог, потом ADIR() - пишешь имена всех файлов в этом каталоге в массив. Дальше в нужном месте создаешь каталог при помощи MD и пишешь в него файлы в цикле при помощи COPY от 1 и до кол-ва элементов массиве, полученном в ADIR().


А подкаталоги? Че с ним будет?
3 мар 05, 10:03    [1358657]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
piva
Member

Откуда: Курган
Сообщений: 1096
x=CREATEOBJECT('Scripting.FileSystemObject')
x.CopyFolder(<source>,<destination>,[lOverWriteFiles])
3 мар 05, 10:52    [1358911]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
bobit
ВладимирМ
Посмотри здесь

Посмотреть не удалось. "Эта страница сейчас недоступна." пишет.

Видимо этот сервер выключился на ночь или твой провайдер не дает к нему доступ. Вот пример кода с этой страницы

lcFolder2Copy="C:\A FSO Testing\"
lcWhere2Copy="C:\A_test4"
llOverWrite = .T.
loFSO = CREATEOBJECT('Scripting.FileSystemObject')
If loFSO.FolderExists(lcFolder2Copy)
   loFolder=loFSO.GetFolder(lcFolder2Copy)
   loFolder.Copy(lcWhere2Copy,llOverWrite)
Endif
Release loFSO

Здесь используется специальный объект Scripting.FileSystemObject. Приведенный пример копирует всю директорию со всеми подкаталогами из папки "C:\A FSO Testing\" в папку "C:\A_test4".

Вообще, для манипуляции файлами и директориями объект Scripting.FileSystemObject очень удобен. Описание его есть в MSDN. Как видите, он легко подключается из FoxPro.

PS: Этот код может не сработать для версии Win95, поскольку в "штатной" поставке такого объекта тогда просто не было. Однако он "штатно" входит в поставку, начиная с Win98.
3 мар 05, 10:53    [1358918]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как скопировать целый каталог  [new]
pitermax
Member

Откуда:
Сообщений: 228
А может кто-то скажет как програмно получить информацию создавлись- ли либо замещались
файлы в каталоге и подкаталогах?
Заранее спасибо.
19 май 08, 14:53    [5683501]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
Dima T
Member

Откуда:
Сообщений: 15279
Не надо подымать старые ветки. У тебя совсем другой вопрос - заводи новую.

pitermax
А может кто-то скажет как програмно получить информацию создавлись- ли либо замещались
файлы в каталоге и подкаталогах?
Заранее спасибо.

ADIR() дает дату последнего изменения, запоминаешь дату последнего просмотра, если есть файлы с более поздней датой - значит менялся или создан заново.

Если скопировали файл в каталог, то дата старая останется. Такие есть?

Можно еще флаг файла "Archive" использовать. При каждом изменении виндовс этот флаг сам устанавливает. Соответственно тебе его сбрасывать надо.

Если хочешь чтобы виндовс сразу оповещал твою прогу при изменениях в папке копай в сторону WinAPI функции FindFirstChangeNotification()
19 май 08, 16:38    [5684501]     Ответить | Цитировать Сообщить модератору
 Re: Как скопировать целый каталог  [new]
pitermax
Member

Откуда:
Сообщений: 228
Спасибо
19 май 08, 17:27    [5684928]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить