Страницы: 1
RSS
Обработка множества txt-файлов. Удалить все после двоеточия в каждой строке
 
Есть множество крупных файлов тхт такого вида:
10000530155:angry_eagle.03
10000564625:biloshapka1448
10000605518:ruslan.ahmet04

Нужно во всех файлах удалить все, что идёт после двоеточия, включая него в каждой строке. чтобы получить файлы такого вида:
10000530155
10000564625
10000605518
 
Цитата
BobbyJo написал:
Нужно во всех файлах удалить все
это в раздел Работа
 
разбейте задачу на несколько частей
1. Обработка нескольких файлов. Перебор файлов
2. считать содержимое файла в массив
3. работа с массивами
4. работа со строками
5. выгрузка массива в файл
 
а может не стоит Excel мучать https://nhutils.ru/blog/nhrt/
По вопросам из тем форума, личку не читаю.
 
Мне надо в каждой строчке каждого файла удалить все после ":". Макрос открывает. Удаляет в каждой строчке и закрывает файл.  Я понимаю что это должно быть легко реализуемо через excel макрос. Или через notepad++, bat/cmd
Изменено: BobbyJo - 23.03.2020 23:39:44
 
Мне надо в каждой строчке каждого файла удалить все после ":". Макрос открывает. Удаляет в каждой строчке и закрывает файл.  Я понимаю что это должно быть легко реализуемо через excel макрос. Или через notepad++, bat/cmd

В экселе есть функция "текст по столбцам". Через неё за секунду всё разбивает. Но файлов много. Нужно чтобы макрос по очереди открыл файлы и сделал это и оставил 1-й столбец

Цитата
БМВ написал: а может не стоит Excel мучать...
Спасибо. Думал макросом excel не сложно реализовать. Я так понимаю это что-то типа notepad++ и надо определенную команду прописать в этой программе для замены?
 
Доброе время суток
Цитата
BobbyJo написал: Думал макросом excel не сложно реализовать
Естественно, записываете макрорекордером
Цитата
В экселе есть функция "текст по столбцам"... и оставил 1-й столбец
Цитата
Нужно чтобы макрос по очереди открыл файлы
Подобные решения на форуме есть.

P. S. По поводу не сложно - да. Но интересно ли, вы не задавались таким вопросом?
 
Думал через эксель будет проще сделать. Ладно. Тема закрыта
Спасибо БМВ за вариант.
Изменено: BobbyJo - 23.03.2020 22:09:35
 
BobbyJo, хорошие люди скрипт сделали!  Распакуйте. Затем папку с текстовыми файлами хватаете мышкой и отпускаете на скрипт
 
Код
'
Dim fso As New FileSystemObject
'
Sub Main()
    Dim dicFiles As Dictionary
    Set dicFiles = FilesDialog()
    Job_files dicFiles
End Sub
'
Function FilesDialog() As Dictionary
    Dim dicFiles As Dictionary: Set dicFiles = New Dictionary
    Dim oFD As FileDialog
    Dim lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
        .AllowMultiSelect = True
        .Title = "Выбрать файлы" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Text files", "*.txt", 1 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = ThisWorkbook.Path 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
            'msoFileDialogViewDetails
            'msoFileDialogViewLargeIcons
            'msoFileDialogViewList
            'msoFileDialogViewPreview
            'msoFileDialogViewProperties
            'msoFileDialogViewSmallIcons
            'msoFileDialogViewThumbnail
            'msoFileDialogViewTiles
            'msoFileDialogViewWebView
        If oFD.Show = 0 Then
        Else
            'цикл по коллекции выбранных в диалоге файлов
            For lf = 1 To .SelectedItems.Count
                dicFiles.Item(.SelectedItems(lf)) = 0
            Next
        End If
    End With
    Set FilesDialog = dicFiles
End Function
'
Sub Job_files(dicFiles As Dictionary)
    Dim vFile As Variant
    For Each vFile In dicFiles
        Job_file vFile
    Next
End Sub
'
Sub Job_file(ByVal sFull As String)
    Dim s As String
    Dim d As Dictionary
    Set d = New Dictionary
    Dim a As Variant
    Dim t1 As Object
    Set t1 = fso.OpenTextFile(sFull, ForReading)
    Dim t2 As Object
    Set t2 = fso.CreateTextFile(sFull & ".tmp", True)
    Do
        If t1.AtEndOfStream Then Exit Do
        s = t1.ReadLine
        a = Split(s, ":")
        If UBound(a) >= 0 Then
            s = a(0)
        End If
        t2.WriteLine s
    Loop
    t1.Close
    t2.Close
    Kill sFull
    Name sFull & ".tmp" As sFull
End Sub
 
Коллеги, всё это замечательно. Но что если кодировка файлов utf-8?
 
Андрей VG, самому интересно. Есть ли примеры, на которых не работает скрипт или макрос?
Страницы: 1
Наверх