Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенос каталогов с содержимым / 24 сообщений из 24, страница 1 из 1
22.10.2013, 23:03
    #38437713
перенос каталогов с содержимым
Доброе время суток.
Подскажите, как просканить текущую папку (если быть точнее, то папку откуда запущена программка) и все каталоги (с содержимым есессна) переместить по определенному пути. (ну типа tpath='c:\work\').
Ковырял FSO с месяц назад, но не получилось почему-то перенести с содержимым папки по моему.
...
Рейтинг: 0 / 0
23.10.2013, 09:38
    #38437878
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Сергей П.Ст.Доброе время суток.
Подскажите, как просканить текущую папку (если быть точнее, то папку откуда запущена программка) и все каталоги (с содержимым есессна) переместить по определенному пути. (ну типа tpath='c:\work\').
Ковырял FSO с месяц назад, но не получилось почему-то перенести с содержимым папки по моему.

Код: sql
1.
xcopy /E
...
Рейтинг: 0 / 0
23.10.2013, 21:53
    #38439052
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
В фоксе есть только перенос файлов. если надо каталоги: то создаешь новый, переносишь туда файлы со старого, старый (пустой) удаляешь.
...
Рейтинг: 0 / 0
24.10.2013, 00:15
    #38439150
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Dima Tесли надо каталоги: тоНу да, поэтому и проще запустить Wscript.Shell или RUN с консольным xcopy
...
Рейтинг: 0 / 0
24.10.2013, 01:52
    #38439190
перенос каталогов с содержимым
блин.... таки придецо внешним ((( не гут... спасибо
...
Рейтинг: 0 / 0
24.10.2013, 04:03
    #38439206
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Сергей П.Ст.придецо внешним ((( не гут...Почему не гут? Самое то.
Я со времён FPD работу с оборудованием вообще и файловой системой (бэкап, обслуживание базы и т.п.) вне задач БД - частенько выносил из исполняемого кода. Мало ли, вдруг вместо ARJ придётся использовать RAR, а вместо локальных "дисков" - UNC-пути... Так что внешние скрипты/батники - обычное дело.
...
Рейтинг: 0 / 0
24.10.2013, 06:03
    #38439218
перенос каталогов с содержимым
а вот с xcopy не совсем уловил как скопировать только подкаталоги(с файлами) в текущем каталоге, не трогая файлов, которые находятся в текущем каталоге ?
xcopy g:\path\patha g:\path\pathb /s /e /q копирует каталоги, но и файлы лежащие в нем... что совсем не надо ))
...
Рейтинг: 0 / 0
24.10.2013, 07:02
    #38439224
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
А используя /EXCLUDE:FileName , содержащим список файлов ?
Код: plaintext
1.
dir /b /a-d > excl.txt
xcopy *.* c:\work\ /e /exclude:excl.txt
...
Рейтинг: 0 / 0
24.10.2013, 08:20
    #38439236
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
AndreTMDima Tесли надо каталоги: тоНу да, поэтому и проще запустить Wscript.Shell или RUN с консольным xcopy
Написать десяток строк кода не сложнее. Вот пример вывода списка всех файлов в папке. Допилить в нужную сторону думаю труда не составит.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
ListFolder("c:\")

func ListFolder
lpara tcPath
local loFiles, loFile, loFolder, loFSO, lcFile, loSubFolders, loSubFolder, llOk
* добавлять переменные в local обязательно, т.к. рекурсия
tcPath = addbs(tcPath)
? 'Folder: ' + tcPath
try
	loFSO = NewObject('Scripting.FileSystemObject')
	loFolder = loFSO.GetFolder(tcPath)
	loSubFolders = loFolder.SubFolders()
	loFiles = loFolder.Files()
	llOk = .T.
catch to oErr
	? 'Ошибка создания списка файлов.'
endtry

if llOk
	For Each loSubFolder in loSubFolders
		llOk = ListFolder(tcPath + loSubFolder.Name) and llOk
	Next

	For Each loFile in loFiles
		? 'File: ' + tcPath + loFile.Name
	Next
endif
return llOk
...
Рейтинг: 0 / 0
24.10.2013, 08:47
    #38439254
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Так в том-то и дело, что проблема не в средствах, а в методах.
И нам, кроме всего, надо переместить каталоги.

Если не прибегать к FSO или Shell, а пользовать консоль - конечно будет "мигать" её окошко. Но при этом "строк кода" будет намного меньше. Выше я уже показал, как эта задача выполняется батником из двух строк (ну, плюс ещё одна строка - чтобы удалить подкаталоги в текущем каталоге). Создать такой текстовый файлик - это ещё три строки (TEXT...ENDTEXT + StrToFile).

Ну или вот таким кодом (правда, в нем два RUN):
Код: sql
1.
2.
3.
4.
5.
cDestPath="c:\work\"
! cmd.exe /c "dir /b /ad > dirs.txt"
cFiles=FILETOSTR("dirs.txt")
cCmd="move "+STRTRAN(LEFT(cFiles,LEN(cFiles)-2),CHR(13)+CHR(10)," "+cDestPath+" "+CHR(38)+" move ")+" "+cDestPath
! &cCmd
...
Рейтинг: 0 / 0
24.10.2013, 08:52
    #38439257
перенос каталогов с содержимым
за пример спасибо.
Блин.. че т все вырисовывается гораздо геморрнее, чем думалось в начале (
Странно вообще, почему с файлами FSO лихо работает а с папками начинается неприятность.
...
Рейтинг: 0 / 0
24.10.2013, 09:41
    #38439305
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Сергей П.Ст.Странно вообще, почему с файлами FSO лихо работает а с папками начинается неприятность.И Вы можете это доказать?
...
Рейтинг: 0 / 0
24.10.2013, 10:00
    #38439328
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
AndreTMЕсли не прибегать к FSO или Shell, а пользовать консоль - конечно будет "мигать" её окошко. Но при этом "строк кода" будет намного меньше.
Мигание легко устраняется: запускать в неактивном свернутом окне или вообще в скрытом.

Проблема в другом: перенос неконтролируемый. Нет гарантии что все файлы перенесутся. Один окажется открытым кем-нибудь и чего делать?
...
Рейтинг: 0 / 0
24.10.2013, 10:23
    #38439354
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
PaulWist
Код: sql
1.
xcopy /E



+1

Хотя для таких случаев мы используем Robocopy
...
Рейтинг: 0 / 0
24.10.2013, 10:23
    #38439355
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Не, мигание консоли так просто не устранить - она всё равно сначала отрисовывается, а затем уже сворачивается-скрывается.

Почему это неконтролируемый? Контролировать перенос можно прямо в командном файле по %ErrorLevel% , или логировать вывод команд, с последующим анализом. В принципе, подход одинаковый при любом методе - программа вызывает [внешнюю] функцию/скрипт/пакетник, предназначенную для выполнения определенного действия, и каким-либо образом получает ответ-результат. Реакция на ошибки имплементирована в вызываемом коде, так что никаких проблем в реакции самой программы не возникает...
...
Рейтинг: 0 / 0
24.10.2013, 10:41
    #38439394
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
AndreTMНе, мигание консоли так просто не устранить - она всё равно сначала отрисовывается, а затем уже сворачивается-скрывается.

попробуй, никаких миганий:
Код: sql
1.
run /n7 cmd.exe


Только тут завершения фокс не будет ждать.

У WshShell тоже можно . Поставь 7 во втором параметре Run().
...
Рейтинг: 0 / 0
24.10.2013, 10:54
    #38439423
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Цифры кстати одинаковые что у фокса, что у WshShell. Виндовые константы скорее всего
HELP VFPValue Application attributes
1 Active and normal size.
2 Active and minimized.
3 Active and maximized.
4 Inactive and normal size.
7 Inactive and minimized.

Есть еще 0 - это вообще без окна
попробуй
Код: sql
1.
run /n0 cmd.exe


и в процессы загляни
...
Рейтинг: 0 / 0
24.10.2013, 11:20
    #38439485
перенос каталогов с содержимым
Sergey SizovСергей П.Ст.Странно вообще, почему с файлами FSO лихо работает а с папками начинается неприятность.И Вы можете это доказать?
Ээээ... ну при попытке перенести папку с файлами, ничего не вышло... по моему отработало с пустой папкой. Делал это не вчера... не помню точно. Но папку с файлами fso не удалось перенести. У Вас есть рабочий код ?
...
Рейтинг: 0 / 0
24.10.2013, 11:22
    #38439494
перенос каталогов с содержимым
AndreTMА используя /EXCLUDE:FileName , содержащим список файлов ?
Код: plaintext
1.
dir /b /a-d > excl.txt
xcopy *.* c:\work\ /e /exclude:excl.txt


В смысле писать весь список файлов для исключения постоянно пополнять его, если в данной папке будут появляться новые файла ? По моему сомнительное удовольствие ((((
...
Рейтинг: 0 / 0
24.10.2013, 11:26
    #38439505
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Dima Tпопробуй
Код: sql
1.
run /n0 cmd.exe

и в процессы загляниНу, мне это всё как-то и не нужно , хотя за пример - спасибо, вдруг когда и понадобится...
...
Рейтинг: 0 / 0
24.10.2013, 11:32
    #38439523
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Сергей П.Ст.В смысле писать весь список файлов для исключения постоянно пополнять егоВы хоть читаете, что мы тут обсуждаем? Пробуете запускать?

Вам был приведен полный код, который САМ всё сделает - и список исключаемых файлов составит, и папки скопирует, достаточно выполнить эти две команды. Можно - пакетным файлом, можно даже через объединение в одну строчку.

Ну и далее ещё давался пример использования утилиты move . Плюс скрытие окна консоли.

Что вам осталось неясным? Что и как сработало неверно?
...
Рейтинг: 0 / 0
24.10.2013, 11:49
    #38439566
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос каталогов с содержимым
Сергей П.Ст.Sergey Sizovпропущено...
И Вы можете это доказать?
Ээээ... ну при попытке перенести папку с файлами, ничего не вышло... по моему отработало с пустой папкой.Аргументация, увы, ниже плинтуса. Делал это не вчера... не помню точно. Но папку с файлами fso не удалось перенести. У Вас есть рабочий код ?Есть, но искать надо. Вы бы лучше свой код показали, а мы бы поискали косяки в нем. Ибо у других все работает :)
...
Рейтинг: 0 / 0
25.10.2013, 00:36
    #38440593
перенос каталогов с содержимым
AndreTMСергей П.Ст.В смысле писать весь список файлов для исключения постоянно пополнять егоВы хоть читаете, что мы тут обсуждаем? Пробуете запускать?

Вам был приведен полный код, который САМ всё сделает - и список исключаемых файлов составит, и папки скопирует, достаточно выполнить эти две команды. Можно - пакетным файлом, можно даже через объединение в одну строчку.

Ну и далее ещё давался пример использования утилиты move . Плюс скрытие окна консоли.

Что вам осталось неясным? Что и как сработало неверно?

cDestPath="c:\work\"
! cmd.exe /c "dir /b /ad > dirs.txt"
cFiles=FILETOSTR("dirs.txt")
список каталогов получили
cCmd="move "+STRTRAN(LEFT(cFiles,LEN(cFiles)-2),CHR(13)+CHR(10)," "+cDestPath+" "+CHR(38)+" move ")+" "+cDestPath
! &cCmd
А вот тут ничего не происходит, все остается на месте, ничего не переносится.
...
Рейтинг: 0 / 0
25.10.2013, 00:39
    #38440595
перенос каталогов с содержимым
Стоп... прошу прощения, проглядел кой чего, все прекрасно работает. Спасибо большое.
Мигание консоли пофигу, результат был важен ))
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенос каталогов с содержимым / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]