Имя пользователя:
Пароль:
 

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

Ветеран


Contributor


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

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


AKadekin,
VBS. Пропишите свои пути
Код: Выделить весь код
 FileIn = Array("Z:\Box_In", "AX1", "Z:\Box_Out1", "MIX", _
                "Z:\Box_In", "MX1", "Z:\Box_Out2", "MIX")

RegExp = "  *]"
Rep = "]"

NN = 4
N1 = LBound(FileIn)
N2 = UBound(FileIn)

ErrMsg = ""
For i = N1 To N2 Step NN
    Call Working(FileIn(i), FileIn(i + 1), FileIn(i + 2), FileIn(i + 3), RegExp, Rep, xDin, xOut, ErrMsg)
Next
'If ErrMsg <> "" Then MsgBox ErrMsg
If ErrMsg <> "" Then WScript.Echo ErrMsg
' =========================

Sub Working(Din, Ein, Dout, Eout, Rx, Rp, iDin, iDout, ErrM)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    If ExistDir(FSO, Din, iDin, ErrM) And ExistDir(FSO, Dout, iOut, ErrM) Then
        Set RegFile = CreateObject("VBScript.RegExp")
        RegFile.Pattern = "^.*\." + Ein + "$"
        RegFile.IgnoreCase = True
        
        For Each jF In iDin.Files
            If RegFile.Test(jF.Name) Then
                If Retxt(FSO, jF, txt, Rx, Rp, ErrM) Then
                    Call Outtxt(FSO, jF, Dout + "\" + FSO.GetBaseName(jF) + "." + Eout, txt, ErrM)
                End If
            End If
        Next
    End If
End Sub

Function ExistDir(FSO, D, iD, ErrM)
    ExistDir = True
    On Error Resume Next
    
    Set iD = FSO.GetFolder(D)
    If Err.Number <> 0 Then
        ErrM = ErrM + "--- """ + D + """" + vbCrLf + "   Open folder. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
        ExistDir = False
    End If
    
    On Error GoTo 0
End Function

Function Retxt(FSO, fName, txt, RExp, RR, MS)
    Retxt = False
    On Error Resume Next
    
    With FSO.OpenTextFile(fName, 1)
        If Err.Number <> 0 Then
            MS = MS + "--- " + fName + vbCrLf + "    Error open file. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
            On Error GoTo 0
            Exit Function
        End If
        txt = .ReadAll
        If Err.Number <> 0 Then
            MS = MS + "--- " + fName + vbCrLf + "    Error read file. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
            On Error GoTo 0
            Exit Function
        End If
        .Close
    End With
    On Error GoTo 0
    
    With CreateObject("VBScript.RegExp")
        .Pattern = RExp
        .IgnoreCase = True
        .Global = True
        If Not .Test(txt) Then
''''''''''            MS = MS + "--- " + fName + vbCrLf + "    no replace." + "    Reg expression: " + """" + RExp + """" + vbCrLf
            Exit Function
        End If
        txt = .Replace(txt, RR)
    End With
    Retxt = True
End Function

Sub Outtxt(FSO, fIn, fOut, txt, MS)
    On Error Resume Next
    
    Set WW = FSO.CreateTextFile(fOut, True)
    If Err.Number <> 0 Then
            MS = MS + "--- " + fOut + vbCrLf + "    Error create file. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
            On Error GoTo 0
            Exit Sub
    End If
    
    WW.Write txt
    If Err.Number <> 0 Then
            MS = MS + "--- " + fOut + vbCrLf + "    Error write in file. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
            On Error GoTo 0
            WW.Close
            Exit Sub
    End If
    WW.Close
    
    Err.Number = 0
    If FSO.FileExists(fOut) Then Call FSO.DeleteFile(fIn, True)
    If Err.Number <> 0 Then
            MS = MS + "--- " + fIn + vbCrLf + "    Error delete file. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
            On Error GoTo 0
            Exit Sub
    End If
    On Error GoTo 0
End Sub
Лучше бы Вы заархивировали реальный файл и приложили к сообщению. Или, если он небольшой, переименуйте его в txt.

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


Последний раз редактировалось megaloman, 10-08-2019 в 19:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:53, 10-08-2019 | #13

Название темы: Текстовые файлы