powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как последовательно перебрать (для загрузки) все файлы из директории
4 сообщений из 4, страница 1 из 1
Как последовательно перебрать (для загрузки) все файлы из директории
    #33489779
Iog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iog
Гость
Как последовательно перебрать (для загрузки) все файлы из директории, в формате html.
В каждом из них найти строку "xxx" и заменить на "yyy"
...
Рейтинг: 0 / 0
Как последовательно перебрать (для загрузки) все файлы из директории
    #33490033
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Dir, или АПИ - FindFirstFile, FindNextFile
2. просто парсинг как обычный текст - InStr,Mid,Replace.
...
Рейтинг: 0 / 0
Как последовательно перебрать (для загрузки) все файлы из директории
    #33490690
Код: 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.
Private Const strPath As String = "D:\2\"

Public Sub FindFiles()
    
    Dim strFile As String
    Dim hFile As Long
    Dim hFile2 As Long
    Dim strLine As String
    
    strFile = Dir(strPath)

    Do Until strFile = ""
        If fnGetFileExt(strFile) = "htm" Or _
          fnGetFileExt(strFile) = "html" Then
          
            hFile = FreeFile
            
            Open strPath & strFile For Input Access Read _
              As hFile
            
            hFile2 = FreeFile
            
            Open strPath & strFile & ".txt" For Output Access Write _
              As hFile2
              
                Do Until EOF(hFile)
                    Line Input #hFile, strLine
                    
                    If InStr(strLine, _
                      "<TITLE>A Simple First Page</TITLE>") >  0  Then
                        strLine = Replace(strLine, _
                          "<TITLE>A Simple First Page</TITLE>", _
                          "<TITLE>NEW</TITLE>")
                    End If
                    
                    Print #hFile2, strLine
                Loop
                
            Close hFile2
            Close hFile
            
            Kill strPath & strFile
            Name strPath & strFile & ".txt" As strPath & strFile
        End If
        
        strFile = Dir
    Loop
End Sub

Public Function fnGetFileExt( _
  strFileName As String) As String
  
    Dim intI As Integer
    
    intI = InStrRev(strFileName, ".")
    
    If intI >  0  Then
        fnGetFileExt = _
          Mid(strFileName, intI +  1 , Len(strFileName))
    End If
End Function
...
Рейтинг: 0 / 0
Как последовательно перебрать (для загрузки) все файлы из директории
    #33491068
Iog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iog
Гость
Немного порывшись в инете и книгах сделал такой вариант:


Код: 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.
Option Explicit

' Имя процедуры: Form_Load
'
' Описание: открывает файлы с одним расширением из директории и затем меняеет в них 1252 на 1251
'
Private Sub Form_Load()
    Dim strFileName As String
    Dim fsn As New FileSystemObject
    Dim fol As Folder
    Dim fls As Files
    Dim fl As File
    Dim intPos As Integer
    Dim ORD, MyLine, MyNewLine
    Dim Text() As String
    Dim i As Integer
    Dim j As Integer
    
    ReDim Text( 0 )
    CommonDialog1.ShowOpen
    strFileName = CommonDialog1.FileName
    If strFileName = "" Then
        Label1.Caption = "Обрабатываемый объект не выбран !"
        Exit Sub
    End If
    strFileName = Mid(strFileName,  1 , InStrRev(strFileName, "\"))
    MyLine = "Windows-1252"
'=================================
    Set fol = fsn.GetFolder(strFileName)
    Set fls = fol.Files     'для каждого нужного файла
    For Each fl In fls
        i =  0 
        If fl.Name Like "*.html" Then
'=================================
            Open fl For Input As  1 
            Do While Not EOF( 1 )                              'открываем, читаем, закрываем
                i = i +  1 
                ReDim Preserve Text(i)
                Line Input # 1 , Text(i)
            Loop
            j = i
            Close # 1 
'================================
            Open fl For Output As  1                               'открываем, записываем, закрываем
            For i =  1  To j
                If InStr( 1 , Text(i), MyLine) >  0  Then Text(i) = Replace(Text (i), "1252", "1251", , , vbTextCompare) ' замена
                Print # 1 , Text(i)
            Next
            Close # 1 
'================================
        End If
    Next
End Sub
Спасибо кто ответил.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как последовательно перебрать (для загрузки) все файлы из директории
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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