22.02.2008, 10:45 | #1 |
Участник
|
Мне нужно запустить код обработки для каждого файла в конкретной папке и обработанные перекинуть в другую.
Как получить именя файлов? Можно конечно использовать DIR >list.txt и вытаскивать имена оттуда, но может попроще способ есть? |
|
22.02.2008, 10:56 | #2 |
NavAx
|
таблица file.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
22.02.2008, 11:20 | #3 |
Участник
|
|
|
22.02.2008, 11:23 | #4 |
MCTS
|
|
|
22.02.2008, 11:35 | #5 |
Участник
|
спасибо - разобрался
|
|
06.03.2008, 19:35 | #6 |
Участник
|
Кста... если при открытом клиенте навижн добавить в интересующую папку файл, то его не будет видно до тех пор пока не перезапустим клиент
|
|
07.03.2008, 10:54 | #7 |
Участник
|
Цитата:
Забавная оказывается штука, она к тому же показывает и сетевые ресурсы компьютера по фильтру \\Hostname |
|
19.03.2013, 14:18 | #8 |
Участник
|
Добрый день всем. Решил не создавать тему а присоединиться. Надеюсь автор будет не против.
Цитата:
Цитата:
Кста... если при открытом клиенте навижн добавить в интересующую папку файл, то его не будет видно до тех пор пока не перезапустим клиент
Забавная оказывается штука, она к тому же показывает и сетевые ресурсы компьютера по фильтру \\Hostname Как выйти из ситуации? Спасибо! |
|
19.03.2013, 15:16 | #9 |
Участник
|
Откровенно говоря не очень понял за какой refresh тут гутарили, но обновить список файлов можно повторным запросом записей (findfirst,findset). В автоматическом режиме это может делать Application Server, если напишите соответствующий отчет или кодеюнит.
|
|
19.03.2013, 16:54 | #10 |
Участник
|
Цитата:
Код: _File.RESET; _File.SETFILTER(Path,'C:\'); IF _File.FIND('-') THEN; _File.RESET; _File.SETFILTER(Path,_Path); _File.SETFILTER("Is a file",FORMAT(TRUE)); IF _File.FIND('-') THEN ... UNTIL _File.NEXT = 0; REPEAT |
|
19.03.2013, 18:45 | #11 |
Участник
|
Да, определенный полтергейст присутствует.
Попробуйте запихнуть ф-цию, пробегания по файлам, в другой объект. И вызывайте его. На днях решал похожую задачу, отличие от вашего кода в том, что перебор как раз в кодеюните, который вызвается из формочки. |
|
19.03.2013, 19:11 | #12 |
Участник
|
Спасибо mibuso, автор не я.
[code] [Variables] Name DataType Subtype Length MSS Automation 'Microsoft Shell Controls And Automation'.Shell MSFl Automation 'Microsoft Shell Controls And Automation'.Folder3 MSFIs Automation 'Microsoft Shell Controls And Automation'.FolderItems3 MSFi Automation 'Microsoft Shell Controls And Automation'.FolderItem i Integer Код: CREATE(MSS); MSFl := MSS.Namespace('E:\temp'); IF ISCLEAR(MSFl) THEN EXIT; MSFIs := MSFl.Items; IF NOT ISCLEAR(MSFIs) THEN FOR i := 1 TO MSFIs.Count DO BEGIN MSFI := MSFIs.Item(i); IF NOT ISCLEAR(MSFI) THEN BEGIN IF NOT MSFI.IsFolder THEN MESSAGE(MSFI.Name); CLEAR(MSFI); END; END; Ошибка как у ТС на mibuso, решение через промежуточный скрипт тоже не отработало.. |
|
20.03.2013, 09:14 | #13 |
Участник
|
Дык она у меня как раз в отдельном кодеюните и обращаюсь к ней из формы. Такое ощущение что какие-то настройки должны быть.... типа не кешировать таблицу FILE. И главное тут так всё просто, что даже манёвра для ошибки нет....чтоб потом её искать
|
|
20.03.2013, 13:47 | #14 |
Участник
|
Shaitan-Babay, попробуйте чуть по другому код написать.
Код: recFile.RESET; recFile.SETRANGE(Path, 'c:\for_exchange\'); recFile.SETRANGE("Is a file", TRUE); IF recFile.FINDFIRST THEN REPEAT i += 1; UNTIL recFile.NEXT = 0; Я вынес этот кусочек в отдельную функцию в кодеюните и запускал с кнопки на форме. Все работает и возвращает количество файлов в папке, при повторном запуске, даже не закрывая формы, все отрабатывает как надо. Может у вас при повторном прогоне фильтры накладываются не такие, например в конце пути нет слэша? |
|
20.03.2013, 14:43 | #15 |
Участник
|
|
|
20.03.2013, 17:37 | #16 |
Участник
|
Цитата:
Сообщение от Constantine
Shaitan-Babay, попробуйте чуть по другому код написать.
Код: recFile.RESET; recFile.SETRANGE(Path, 'c:\for_exchange\'); recFile.SETRANGE("Is a file", TRUE); IF recFile.FINDFIRST THEN REPEAT i += 1; UNTIL recFile.NEXT = 0; Я вынес этот кусочек в отдельную функцию в кодеюните и запускал с кнопки на форме. Все работает и возвращает количество файлов в папке, при повторном запуске, даже не закрывая формы, все отрабатывает как надо. Может у вас при повторном прогоне фильтры накладываются не такие, например в конце пути нет слэша? Цитата:
Может всё таки есть какие-то настройки Клиента? Кстати заметил такую вещь. Что если форму закрыть(а может это не обязательно)....подождать(больше 10 минут точно) и снова запустить и нажать кнопку запускающую функцию то система увидит новый файл... Буду дальше экспериментировать. |
|
20.03.2013, 18:08 | #17 |
Участник
|
Можно меня поздравить! Проблему решил. Всё оказалось просто. Клиент работает под Win7, и если клиента запустить под правами админа то всё отлично видит все перемещения файлов.
|
|