![]() |
|
Как из 1С проверить быстро наличие файлов по списку ? быстрее ФС.СуществуетФайл | ☑ | ||
---|---|---|---|---|
0
Холст
17.06.16
✎
00:26
|
сабж
имеем список с именами и путями файлов, может WinAPI или чтото подобное позволяет списком сразу проверить наличие файлов а не по одному |
|||
1
Звездец
17.06.16
✎
00:26
|
спросить у батника, который проверит быстрее
|
|||
2
Garykom
гуру
17.06.16
✎
00:32
|
(1)
Я спросил у батника, Где мои любимые? Файлики из списочка? |
|||
3
Звездец
17.06.16
✎
00:36
|
(2) либо VB, смотря что ближе. Или подождать местного Net-гуру, как раз для него темка. Вот будет ли быстрее это вопрос
|
|||
4
Холст
17.06.16
✎
00:38
|
батник тоже будет пофайлово спрашивать у файловой системы о наличии файла
может WMI/WinApi позволяет обратиться сразу списком одним обращением ? |
|||
5
Garykom
гуру
17.06.16
✎
00:39
|
(3) ФС. она такая 77 что и на Win95 как бы пашет, но вот гуру там свое не сможет запустить ну никак. Хотя если убьет 10-ок лет переписав .net ))
|
|||
6
Холст
17.06.16
✎
00:39
|
батник
echo off set list=%~1\FNames.txt if exist "%list%" ( for /f "delims=" %%A in (%list%) do ( if not exist "%~1\%%A" echo %%A не существует ) pause ) else ( dir /b>"%list%" ) |
|||
7
H A D G E H O G s
17.06.16
✎
00:40
|
(4) Нет такого. Только
FindFirstFile() |
|||
8
Garykom
гуру
17.06.16
✎
00:40
|
(4) Все намного проще, делаем dir/w для каталога (понятно что лучше винапи), получаем список имен файлов и в 1С тупо сравниваем.
|
|||
9
H A D G E H O G s
17.06.16
✎
00:41
|
(8) Да можно просто НайтиФайлы()
|
|||
10
Звездец
17.06.16
✎
00:41
|
(4) а как ты хотел? все равно система будет искать файлы поочередно, разница может будет только в скорости выполнения
|
|||
11
Garykom
гуру
17.06.16
✎
00:42
|
(9) Так я походу 77 начал забывать уже ((
|
|||
12
Звездец
17.06.16
✎
00:42
|
(8) но опять же, имеем список, но на 77 сравнить вхождение одного списка в другой тоже придется перебирать
|
|||
13
Garykom
гуру
17.06.16
✎
00:46
|
(12) Кто сказал такую глупость? Сливаем списки, добавляем колонку колв-во =1 и ТЗ.Свернуть(...
|
|||
14
Torquader
17.06.16
✎
00:48
|
Получается, что быстрее https://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx ничего не будет, если грамотно передать параметры поиска.
|
|||
15
Звездец
17.06.16
✎
00:49
|
(13) ну кстати да, причем отработает довольно быстро. Осталось узнать что от этого ТС хочет, потому как вариантов результата будет довольно много и их еще придется обработать
|
|||
16
Torquader
17.06.16
✎
00:49
|
Потом, одно дело, когда у вас в директории несколько тысяч файлов и нужно найти среди них какие-то 10 - тогда перебор со списком будет не очень.
|
|||
17
Garykom
гуру
17.06.16
✎
00:50
|
(16) Верное замечание, нуна больше инфы.
|
|||
18
Torquader
17.06.16
✎
00:50
|
А, я ещё забыл про WMI и Select * from Win32_DataFile и условие поставить правильно.
|
|||
19
Torquader
17.06.16
✎
00:54
|
И не забывайте, что у (0) "с именами и путями" - они не в одной директории, то есть FindFirstFile может не спасти.
|
|||
20
Torquader
17.06.16
✎
00:56
|
Просто, GetFileAttributes("\?\ИмяФайла" будет быстрее, так как NTFS содержит индексированные директории.
|
|||
21
Холст
17.06.16
✎
01:18
|
Задача проверить наличие файлов сертификатов в папке по списку хранимому в 1С
способ сначал получить список имеющихся файлов потом сравнить список с искомым списком должно быть быстро Dir отрабатывает быстро, WMI пишут нежелательно тк у юзера может не быть прав к WMI какой аналог Dir/s (получить список файлов желательно с подпапками) в FSO чтобы без DOSокна было ? |
|||
22
Звездец
17.06.16
✎
01:22
|
(21) под сертификатами ты имеешь ввиду файлы картинок? Может не стоит заморачиваться и проверять ночью регламентным заданием
|
|||
23
Garykom
гуру
17.06.16
✎
01:22
|
||||
24
Холст
17.06.16
✎
01:23
|
если я верно понял, FindFirstFile делает выборку, а последущие FindNextFile не делает обращение к жесткому диску
|
|||
25
Холст
17.06.16
✎
01:29
|
(22) ночью неспеша это понятно
|
|||
26
Torquader
17.06.16
✎
01:37
|
(24) Она открывает выборку, а остальные по ней перемещаются.
Насколько я понимаю, у всех есть некоторый аналог IEnumVariant, где есть перебор. Ну, если просто хочется перебрать, то Scripting.FileSystemObject потом GetFolder и коллекция Files |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |