taravasya
|
Posted: Tue Feb 26, 2013 14:05 Post subject: |
|
|
Ну это очевидно. *.exe, тоже вообщем то не плагины. Но я не захотел создавать лишних папок, и сложил всё "кастомное" в папку plugins.
Я в vbs не силён.. скрипт выполняемый из первой кнопки, мне сваяли здесь же(на этом форуме). Смогли бы Вы подсказать, что нужно добавить в скрипте?
Code: | '===============================================
' Замена текста в файле с помощью рег. выражений
'
' Параметры:
' {файл} {текст для поиска} {текст для замены}
'===============================================
Option Explicit
Dim FSO, F, Str1, Str2, Text
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
F = .Arguments(0)
Str1 = .Arguments(1)
Str2 = .Arguments(2)
End With
F = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F))
Text = FSO.OpenTextFile(F, 1).ReadAll
Text = RegExpReplace(Text, Str1, Str2)
FSO.OpenTextFile(F, 2).Write Text
Set FSO = Nothing
Dim FSOT, oTextFile, AllText, OTF, FileName, CommFile, CommLabel, CommLabelDel, BegFile, BegFileComm
Set FSOT = CreateObject("Scripting.FileSystemObject")
Set OTF = FSOT.OpenTextFile(WScript.Arguments(3), 1)
CommFile = WScript.Arguments(4)
CommLabel = WScript.Arguments(5)
CommLabelDel = WScript.Arguments(6)
AllText = ""
If FSOT.FileExists(CommFile) Then
Set oTextFile = FSOT.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 FSOT.FileExists(FileName) Then
FileName = FSOT.GetFile(FileName).Name
Else
FileName = FSOT.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(CommLabelDel)), CommLabelDel, 1) > 0 Then
AllText = Left(AllText, BegFileComm - 1) & Mid(AllText, BegFileComm + Len(CommLabelDel))
'Удаление лишних пробелов
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 = FSOT.OpenTextFile(CommFile, 2)
oTextFile.Write AllText
oTextFile.Close
End If
End If
Loop
Set FSOT = CreateObject("Scripting.FileSystemObject")
Set OTF = FSOT.OpenTextFile(WScript.Arguments(3), 1)
CommFile = WScript.Arguments(4)
CommLabel = WScript.Arguments(5)
CommLabelDel = WScript.Arguments(6)
Do While Not OTF.AtEndOfStream
FileName = OTF.ReadLine
If FSOT.FileExists(FileName) Then
FileName = FSOT.GetFile(FileName).Name
Else
FileName = FSOT.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) & CommLabel & " " & Mid(AllText, BegFileComm)
Set oTextFile = FSOT.OpenTextFile(CommFile, 2)
oTextFile.Write AllText
oTextFile.Close
End If
Else
Set oTextFile = FSOT.OpenTextFile(CommFile, 8, 2)
If Right(AllText, Len(vbNewLine)) <> vbNewLine Then
oTextFile.WriteLine
AllText = AllText & vbNewLine
End If
oTextFile.Write FileName & " " & CommLabel
oTextFile.Close
AllText = AllText & FileName & " " & CommLabel
End If
Loop
OTF.Close
Set oTextFile = Nothing
Set OTF = Nothing
Set FSOT = Nothing
WScript.Quit 0
'Функция замены с помощью регулярных выражений
Function RegExpReplace(pText, pFindStr, pNewStr)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = pFindStr
regEx.IgnoreCase = True
regEx.Global = True
RegExpReplace = regEx.Replace(pText, pNewStr)
Set regEx = Nothing
End Function |
Скрипт универсальный, для трёх разных кнопок. Его действие изменяется в зависимости от входных параметров. |
|