Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: txt в csv
Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


YuS_2, Шаблон регулярки для замены подстроки, в общем случае, в JS, имхо сложноватый. В VBS реплэйс организован проще.
Вот вариант VBS, ориентированный для применения в планировщике.
Во входной папке обрабатываются файлы по маске, заменяются указанные символы, файлы сохраняются в указанной выходной папке по заданному расширению, исходные файлы перемещаются в архив, чтобы больше их не обрабатывать при последующем запуске батника
Код: Выделить весь код
BoxIn = "Z:\Soft_In"
FileIn = "^.*\.txt$"        ' *.txt
BoxOut = "Z:\Soft_Out"
BoxArc = "Z:\Soft_In\Arc"
ExtOut = "csv"
Str1 = ":"
Str2 = ";"

Set RegMaska = CreateObject("VBScript.RegExp")
    RegMaska.Pattern = FileIn
    RegMaska.IgnoreCase = True

With CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
        Set Folds = .GetFolder(BoxIn)
        If Err.Number <> 0 Then
            MsgBox "Ошибка при открытии папки" + vbCrLf + BoxIn + vbCrLf + vbCrLf + Err.Description
            WScript.Quit 2
        End If
    On Error GoTo 0
    
    Set Files = Folds.Files
    
    For Each jf In Files
        If RegMaska.Test(jf) Then
            On Error Resume Next
            Set fIn = .OpenTextFile(jf, 1, False)

            If Err.Number <> 0 Then
                MsgBox "Ошибка при открытии файла" + vbCrLf + .GetAbsolutePathName(jf) + vbCrLf + vbCrLf + Err.Description
                WScript.Quit 2
            End If
            On Error GoTo 0

            Alls = fIn.ReadAll
            fIn.Close
            
            NewName = BoxOut + "\" + .GetBaseName(jf) + "." + ExtOut
            ArcName = BoxArc + "\" + .GetFileName(jf)
            
            On Error Resume Next
            Set fIn = .CreateTextFile(NewName, True)

            If Err.Number <> 0 Then
                MsgBox "Ошибка при создании файла" + vbCrLf + BoxOut + "\" + .GetBaseName(jf) + "." + ExtOut + vbCrLf + vbCrLf + Err.Description
                WScript.Quit 2
            End If
            On Error GoTo 0

            fIn.Write Replace(Alls, Str1, Str2)
            fIn.Close
            If .FileExists(ArcName) Then fIn=.DeleteFile(ArcName,True)
            fIn = .MoveFile(.GetAbsolutePathName(jf), ArcName)
        End If
    Next
End With
'  MsgBox "Скрипт завершен"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 20:17, 27-01-2019 | #23

Название темы: txt в csv