'==============================================================================
' Удаление в начале комментария (descript.ion) ####
'
' В качестве параметров указать:
' %L "%Pdescript.ion"
'==============================================================================
Option Explicit
If WScript.Arguments.Count < 2 Then
MsgBox "Не указаны параметры - %L ""%Pdescript.ion""", _
vbOKOnly + vbExclamation, _
"Удаление #### в комментарии"
WScript.Quit
End If
Dim FSO, oTextFile, AllText, OTF, FileName, CommFile, CommLabel, BegFile, BegFileComm, EndFileComm
Set FSO = CreateObject("Scripting.FileSystemObject")
Set OTF = FSO.OpenTextFile(WScript.Arguments(0), 1)
CommFile = WScript.Arguments(1)
CommLabel = "####"
AllText = ""
If FSO.FileExists(CommFile) Then
Set oTextFile = FSO.OpenTextFile(CommFile, 1)
On Error Resume Next 'Игнорируем ошибку, если файл пустой
AllText = oTextFile.ReadAll
On Error GoTo 0
oTextFile.Close
End If
Do While Not OTF.AtEndOfStream
FileName = OTF.ReadLine
If FSO.FileExists(FileName) Then
FileName = FSO.GetFile(FileName).Name
Else
FileName = FSO.GetFolder(FileName).Name
End If
If InStr(1, FileName, " ", 1) > 0 Then
FileName = """" & FileName & """"
End If
BegFile = InStr(1, vbNewLine & AllText, vbNewLine & FileName & " ", 1)
If BegFile > 0 Then
BegFileComm = BegFile + Len(FileName) + 1
If InStr(1, Mid(AllText, BegFileComm, Len(CommLabel)), CommLabel, 1) > 0 Then
AllText = Left(AllText, BegFileComm - 1) & Mid(AllText, BegFileComm + Len(CommLabel))
'Удаление лишних пробелов
If Instr(BegFile, AllText, FileName & " ", 1) > 0 Then
AllText = Left(AllText, BegFileComm - 2) & Mid(AllText, BegFileComm)
End If
'Удаление пустых комментариев
If Instr(BegFile, AllText & vbNewLine, FileName & " " & vbNewLine) > 0 Then
AllText = Left(AllText, BegFile - 1) & Mid(AllText, BegFile + Len(FileName & " " & vbNewLine))
End If
'Удаление лишних концевых строк
If Right(AllText, Len(vbNewLine)) = vbNewLine Then
AllText = Left(AllText, Len(AllText) - Len(vbNewLine))
End If
Set oTextFile = FSO.OpenTextFile(CommFile, 2)
oTextFile.Write AllText
oTextFile.Close
End If
End If
Loop
OTF.Close
Set oTextFile = Nothing
Set OTF = Nothing
Set FSO = Nothing
WScript.Quit |