Andrey_A
|
Posted: Sun Sep 19, 2010 20:37 Post subject: Структурирование файла главного меню Total Commandera |
|
|
Тут, намедни, смотрел, разбирал файлы Wcmd_*.mnu разных языков и сборок... и пришла идея о создании скрипта по структурированию файла. В большинстве того, что я видел структура была либо по первому столбцу, либо как попало. Да и свой файл, в котором 3300 строк руки не добирались всё расставить на свои места. А после использования этого скрипта смотреть такие файлы стало намного веселее и приятнее. Испытывал примерно на 40 разных файлах, всё работает, но если будут какие-то дополнения со стороны профессионалов, я всегда за! Code: | '===============================================================
' Структурирование файла 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 |
Last edited by Andrey_A on Sun Sep 19, 2010 21:05; edited 1 time in total |
|