'===============================================================
' Структурирование файла Wcmd_*.MNU главного меню Total Commandera
' В параметрах вызова из TC должен быть прописано путь к файлу:
' "%%COMMANDER_PATH%%\Language\Wcmd_Rus.mnu"
' или открывать его подкурсором %P%N
' Автор Аверин Андрей 2010
'===============================================================
Option Explicit
Dim FSO, ListFile, SetList, Text, MyFile, i,k,sym,FF,F,P,L,ContrStr,Stroka,Probel,Space
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
FF = .Arguments(0)
End With
F = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(FF))
Set ListFile = FSO.OpenTextFile(F, 1)
Text = ""
ContrStr = 0
Space = 7 'изменить если нужен отступ больше или меньше
P = 0
Do While Not ListFile.AtEndOfStream
SetList = ListFile.ReadLine
Stroka = ""
Probel = ""
For i = 1 To Len(SetList)
sym = mid(SetList,i,1)
If sym = "P" or sym = "M" or sym = "E" or sym = "S" or sym = "H"or sym = ";" Then
If sym = ";" Then
L = 0
End If
k = i
i = Len(SetList)
End If
Next
If SetList <> "" Then
For i = k To Len(SetList)
sym = mid(SetList,i,1)
Stroka = Stroka & sym
Next
End If
If P < 0 Then P = 0
If mid(Stroka ,1,1) = "P" Then
If ContrStr = 1 Then
P = P + Space
End If
L = P
ContrStr = 1
End If
If mid(Stroka ,1,1) = "M" Then
If ContrStr = 2 Then
P = P - Space
ContrStr = 1
End If
L = P + Space
End If
If Stroka = "MENUITEM SEPARATOR" Then
If ContrStr = 2 Then
P = P - Space
ContrStr = 1
End If
L = P + Space*2
End If
If mid(Stroka ,1,1) = "E" Then
If ContrStr = 2 Then
P = P - Space
End If
L = P
ContrStr = 2
End If
For i = 1 To L
Probel = Probel & " "
Next
Text = Text & Probel & Stroka & vbNewLine
L = 0
Loop
FSO.CopyFile F, F & ".bak" ' За\Рас комментируйте если нужна копия файла
Set MyFile= fso.CreateTextFile(F, True)
MyFile.Write(Text)
ListFile.Close
Set ListFile = Nothing
Set FSO = Nothing
WScript.Quit |