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

Код: sql
1.
xcopy /E
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439052
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В фоксе есть только перенос файлов. если надо каталоги: то создаешь новый, переносишь туда файлы со старого, старый (пустой) удаляешь.
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439150
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tесли надо каталоги: тоНу да, поэтому и проще запустить Wscript.Shell или RUN с консольным xcopy
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439190
блин.... таки придецо внешним ((( не гут... спасибо
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439206
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей П.Ст.придецо внешним ((( не гут...Почему не гут? Самое то.
Я со времён FPD работу с оборудованием вообще и файловой системой (бэкап, обслуживание базы и т.п.) вне задач БД - частенько выносил из исполняемого кода. Мало ли, вдруг вместо ARJ придётся использовать RAR, а вместо локальных "дисков" - UNC-пути... Так что внешние скрипты/батники - обычное дело.
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439218
а вот с xcopy не совсем уловил как скопировать только подкаталоги(с файлами) в текущем каталоге, не трогая файлов, которые находятся в текущем каталоге ?
xcopy g:\path\patha g:\path\pathb /s /e /q копирует каталоги, но и файлы лежащие в нем... что совсем не надо ))
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439224
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А используя /EXCLUDE:FileName , содержащим список файлов ?
Код: plaintext
1.
dir /b /a-d > excl.txt
xcopy *.* c:\work\ /e /exclude:excl.txt
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #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
перенос каталогов с содержимым
    #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
перенос каталогов с содержимым
    #38439257
за пример спасибо.
Блин.. че т все вырисовывается гораздо геморрнее, чем думалось в начале (
Странно вообще, почему с файлами FSO лихо работает а с папками начинается неприятность.
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439305
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей П.Ст.Странно вообще, почему с файлами FSO лихо работает а с папками начинается неприятность.И Вы можете это доказать?
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439328
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMЕсли не прибегать к FSO или Shell, а пользовать консоль - конечно будет "мигать" её окошко. Но при этом "строк кода" будет намного меньше.
Мигание легко устраняется: запускать в неактивном свернутом окне или вообще в скрытом.

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



+1

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

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

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


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

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


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

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

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

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

Что вам осталось неясным? Что и как сработало неверно?
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #38439566
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей П.Ст.Sergey Sizovпропущено...
И Вы можете это доказать?
Ээээ... ну при попытке перенести папку с файлами, ничего не вышло... по моему отработало с пустой папкой.Аргументация, увы, ниже плинтуса. Делал это не вчера... не помню точно. Но папку с файлами fso не удалось перенести. У Вас есть рабочий код ?Есть, но искать надо. Вы бы лучше свой код показали, а мы бы поискали косяки в нем. Ибо у других все работает :)
...
Рейтинг: 0 / 0
перенос каталогов с содержимым
    #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
перенос каталогов с содержимым
    #38440595
Стоп... прошу прощения, проглядел кой чего, все прекрасно работает. Спасибо большое.
Мигание консоли пофигу, результат был важен ))
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенос каталогов с содержимым
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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