powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как быстро найти файлы на скриптовом языке?
5 сообщений из 30, страница 2 из 2
Как быстро найти файлы на скриптовом языке?
    #36926551
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterНе понял вопроса. Это "программное" управление чем-то особо отличается от других? Есть соответствующее сдк "Microsoft Windows Search 3.x SDK". Вот его и пользуйте. Хотя можно и апать топик. Мож хто-нить и напишет за вас "волшебные" скрипты задаром.

А вы бы сабж внимательно почитали. Без проблем можно вызвать функции на языке Си, которые ищут файлы.

Но речь немного о другом - о COM-объектах, с помощью которых можно искать файлы. Т.к. вызывать сишные функции из 1с нельзя
...
Рейтинг: 0 / 0
Как быстро найти файлы на скриптовом языке?
    #36928879
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вы же, как не специалист, должны понимать, что одними "com" или "api" простым перебором не получится быстрого поиска. Быстрый поиск обеспечивается наличием индекса контента. Поэтому былы предложены соотв. технологии. А вы говорите "шутки". Какие уж тут... FixinНо речь немного о другом - о COM-объектах, с помощью которых можно искать файлы. Т.к. вызывать сишные функции из 1с нельзя
...
Рейтинг: 0 / 0
Как быстро найти файлы на скриптовом языке?
    #36939299
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterНо вы же, как не специалист, должны понимать, что одними "com" или "api" простым перебором не получится быстрого поиска. Быстрый поиск обеспечивается наличием индекса контента. Поэтому былы предложены соотв. технологии. А вы говорите "шутки". Какие уж тут...

Товарищ, вы глубоко заблуждаетесь.
Одно дело искать нужные файлы (например *.doc) в указанной папке и ее подкаталогаг путем перебора всех файлов в папке через COM, как это можно сделать через FileSystem, а другое дело задать маску и получить файлы уже по готовой маске, без перебора всех файлов!!!
...
Рейтинг: 0 / 0
Как быстро найти файлы на скриптовом языке?
    #37060150
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, ну что же вы!
Я разочарован. Истина была рядом, а никто не знал, ну как же так. Нужно использовать встроенную в VBA функцию DIR.

Кидаю, как есть, разбирайтесь, получилось, все быстро:

Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
Sub SearchFilesForPath(ArrayOfSearchedFiles, FolderPath, FileExt)
    SearchMask = FolderPath & "\*." & FileExt
    FileName = Dir(SearchMask)
    While FileName <> ""
        If UCase(Right(FileName, Len(FileExt))) = UCase(FileExt) Then
            ArrayOfSearchedFiles.Add FolderPath & "\" & FileName
        End If
        FileName = Dir()
    Wend

End Sub

Sub SearchSiteFilesServ(fs, Collection, Path, FileType, Counter)

    Set Folder = fs.GetFolder(Path)
    
    Set FileCollection = New Collection
    
    FolderPath = Folder.Path
    
    If InStr( 1 , FileType, ";HTM;") <>  0  Then
        SearchFilesForPath FileCollection, FolderPath, "htm"
    End If
    If InStr( 1 , FileType, ";DOC;") <>  0  Then
        SearchFilesForPath FileCollection, FolderPath, "doc"
        SearchFilesForPath FileCollection, FolderPath, "docx"
    End If
    If InStr( 1 , FileType, ";XLS;") <>  0  Then
        SearchFilesForPath FileCollection, FolderPath, "xls"
        SearchFilesForPath FileCollection, FolderPath, "xlsx"
    End If
    
    
        
    For Each CurrentFileName In FileCollection
    'For Each file In Folder.Files
        Set file = fs.GetFile(CurrentFileName)
        OK = False
        ThisFileName = file.Path
        CheckHTML = (Right(file.Name,  3 ) = "htm" Or Right(file.Name,  4 ) = "html") And Left(file.Name,  2 ) <> "~$"
        CheckDOC = (Right(file.Name,  3 ) = "doc" Or Right(file.Name,  4 ) = "docx") And Left(file.Name,  2 ) <> "~$"
        CheckXLS = (Right(file.Name,  3 ) = "xls" Or Right(file.Name,  4 ) = "xlsx") And Left(file.Name,  2 ) <> "~$"
        CheckDOC2HTM = False
        If InStr( 1 , FileType, ";HTM;") <>  0  Then
            OK = OK Or CheckHTML
        End If
        If InStr( 1 , FileType, ";DOC;") <>  0  Then
            OK = OK Or CheckDOC
        End If
        If InStr( 1 , FileType, ";XLS;") <>  0  Then
            OK = OK Or CheckXLS
        End If
        If (CheckDOC And InStr( 1 , FileType, ";DOC2HTM;") <>  0 ) _
            Or (CheckXLS And InStr( 1 , FileType, ";XLS2HTM;") <>  0 ) Then
            SearchFileName = Replace(file.Path, ".doc", ".htm")
            SearchFileName = Replace(file.Path, ".doc", ".htm")
            SearchFileName = Replace(SearchFileName, ".xls", ".htm")
            SearchFileName = Replace(SearchFileName, ".xlsx", ".htm")
            
            If InStr( 1 , FileType, ";UPDATE;") <>  0  Then
                'Если файла нет, значит нужно обновлять...
                If fs.FileExists(SearchFileName) Then
                    Set SearchFile = fs.GetFile(SearchFileName)
                    CheckDOC2HTM = file.DateLastModified > SearchFile.DateLastModified
                Else
                    CheckDOC2HTM = True
                End If
            Else
                CheckDOC2HTM = fs.FileExists(SearchFileName)
            End If

            OK = OK And CheckDOC2HTM
        End If
       

        If OK Then
            Debug.Print file.Path
            Set ThisCollection = New Collection
            ThisCollection.Add file.Path, "FullName"
            ThisCollection.Add CheckHTML, "HTML"
            ThisCollection.Add CheckDOC, "DOC"
            ThisCollection.Add CheckDOC2HTM, "DOC2HTM"
            Collection.Add ThisCollection, file.Path
        End If
        Counter = Counter +  1 
        If Counter Mod  10  =  0  Then
            Application.StatusBar = Collection.Count() & " : " & file.Path
            DoEvents
        End If
        
    Next
    For Each SubFolder In Folder.SubFolders
        SearchSiteFilesServ fs, Collection, SubFolder.Path, FileType, Counter
    Next

End Sub
...
Рейтинг: 0 / 0
Как быстро найти файлы на скриптовом языке?
    #37102145
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, как вариант по сабжу, было бы создание MSScriptControl и там вызов функции Dir
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как быстро найти файлы на скриптовом языке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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