Создание .bar файлов из .txt файла с командами
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Создание .bar файлов из .txt файла с командами
Есть текстовый файл, который является результатом Excel, который имеет всё, чтобы создать .bar файлы, помогите пожалуйста автоматически создать в папке %COMMANDER_PATH%\BARS\ .bar файлы bar1.bar, bar2.bar, bar3.bar... пытался создать скрипт, но мозгов не хватает, спасибо за понимание, ссылка для скачивания файла:
http://depositfiles.com/files/kwf6o0u0i
http://depositfiles.com/files/kwf6o0u0i
Flasher других обменников не знал, теперь буду знать, спасибо, вот ссылки:
http://slil.ru/29047785/6b33398f.4bd8b490/WinBars.zip
http://rghost.ru/download/1487772/54394 ... inBars.zip
http://slil.ru/29047785/6b33398f.4bd8b490/WinBars.zip
http://rghost.ru/download/1487772/54394 ... inBars.zip
Andrey_A писал(а):специально для тебя организую ещё кнопки в меню... и буду пользоваться
Всё таки стоит расшифровать для скриптологов, что подразумевается под этими словами. У каждого могут быть свои представления, о том, чем является результат Excel, и что такое "всё, чтобы создать bar-файлы". То, что очевидно для одних, для других может показаться тёмным лесом.Andrey_A писал(а):Есть текстовый файл, который является результатом Excel, который имеет всё, чтобы создать .bar файлы
Я думаю, для скриптологов будет и так всё понятно, изходя из файла,Всё таки стоит расшифровать для скриптологов
и для тех кто его видел. Если необходимо поясню:
1. Я редактирую меню через табличный файл, что отражено подробно в теме и где есть дополнительные ссылки на скачивание:
http://forum.wincmd.ru/viewtopic.php?t= ... C%E5%ED%FE
2. Я составил второй табличный фал, который считывает из первого всё необходимое для создания дополнительных меню (про excel я писал, чтобы не было вопросов про большие строчные пробелы в файле)
3. Решение вопроса, как я его вижу, я не хочу описывать - зачем наставлять - те кто хочет помочь, тот поможет[/quote]
Сделать то, конечно, можно. Только нужно время.
Может быть помогу, но скоро не обещаю.
Я правильно понял, что секцией [Buttonbar] начинвется новая панель?
И хорошо бы, чтобы в файле было поменьше мусора - всяких там пустых строк и строк с содержимым "#ЗНАЧ!". Строка с "Buttoncount=" тоже ни к чему. Чем меньше в скрипте будет проверок, тем быстрее он будет готов
Может быть помогу, но скоро не обещаю.
Я правильно понял, что секцией [Buttonbar] начинвется новая панель?
И хорошо бы, чтобы в файле было поменьше мусора - всяких там пустых строк и строк с содержимым "#ЗНАЧ!". Строка с "Buttoncount=" тоже ни к чему. Чем меньше в скрипте будет проверок, тем быстрее он будет готов
Нет, я не сплю. Я просто медленно моргаю.
Batya ты прав, надо подчистить файл
1. Убрать все пустые строки
2. Убрать мусор "#ЗНАЧ!"
3. Убрать Buttoncount=
4. Можно ещё убрать и [Buttonbar] и новую панель начинать при нахождении button1= - так меньше, я думаю будет проверок
ссылка на файл без мусора:
http://rghost.ru/download/1494836/b7d9a ... leaner.zip
1. Убрать все пустые строки
2. Убрать мусор "#ЗНАЧ!"
3. Убрать Buttoncount=
4. Можно ещё убрать и [Buttonbar] и новую панель начинать при нахождении button1= - так меньше, я думаю будет проверок
ссылка на файл без мусора:
http://rghost.ru/download/1494836/b7d9a ... leaner.zip
[Buttonbar], думаю, лучше оставить. А ещё лучше использовать конструкцию вида [Buttonbar=Моя новая панель.bar] для имени файла панели (можно без ".bar").Andrey_A писал(а):4. Можно ещё убрать и [Buttonbar] и новую панель начинать при нахождении button1= - так меньше, я думаю будет проверок
Нет, я не сплю. Я просто медленно моргаю.
Набросал скрипт на Autoit. Не очень красиво получилось, но работает. Берет только полезные строки, мусор игнорируется.
Код: Выделить всё
$text = FileRead(@ScriptDir & "\WinBars.txt")
$aBarData = StringSplit($text, "[Buttonbar]", 1)
$nBarCount = 1
For $i = 1 To $aBarData[0]
$sBarName = StringFormat("bar%03d.bar", $nBarCount)
$counter = 1
While 1
$cmd = StringRegExp($aBarData[$i], "(?m)^cmd" & $counter & "=(.+)$", 1)
If IsArray($cmd) Then
IniWrite($sBarName, "Buttonbar", "Buttoncount", $counter)
IniWrite($sBarName, "Buttonbar", "cmd" & $counter, StringStripWS($cmd[0], 3))
$menu = StringRegExp($aBarData[$i], "(?m)^menu" & $counter & "=(.+)$", 1)
If IsArray($menu) Then IniWrite($sBarName, "Buttonbar", "menu" & $counter, StringStripWS($menu[0], 3))
$button = StringRegExp($aBarData[$i], "(?m)^button" & $counter & "=(.+)$", 1)
If IsArray($button) Then IniWrite($sBarName, "Buttonbar", "button" & $counter, StringStripWS($button[0], 3))
$iconic = StringRegExp($aBarData[$i], "(?m)^iconic" & $counter & "=(.+)$", 1)
If IsArray($iconic) Then IniWrite($sBarName, "Buttonbar", "iconic" & $counter, StringStripWS($iconic[0], 3))
Else
ExitLoop
EndIf
$counter += 1
Wend
If $counter > 1 Then
$nBarCount +=1
EndIf
Next
Точно, забыл.
Код: Выделить всё
$text = FileRead(@ScriptDir & "\WinBars.txt")
$aBarData = StringSplit($text, "[Buttonbar]", 1)
$nBarCount = 1
For $i = 1 To $aBarData[0]
$sBarName = StringFormat("bar%03d.bar", $nBarCount)
$counter = 1
While 1
$cmd = StringRegExp($aBarData[$i], "(?m)^cmd" & $counter & "=(.+)$", 1)
If IsArray($cmd) Then
IniWrite($sBarName, "Buttonbar", "Buttoncount", $counter)
IniWrite($sBarName, "Buttonbar", "cmd" & $counter, StringStripWS($cmd[0], 3))
$menu = StringRegExp($aBarData[$i], "(?m)^menu" & $counter & "=(.+)$", 1)
If IsArray($menu) Then IniWrite($sBarName, "Buttonbar", "menu" & $counter, StringStripWS($menu[0], 3))
$button = StringRegExp($aBarData[$i], "(?m)^button" & $counter & "=(.+)$", 1)
If IsArray($button) Then IniWrite($sBarName, "Buttonbar", "button" & $counter, StringStripWS($button[0], 3))
$param = StringRegExp($aBarData[$i], "(?m)^param" & $counter & "=(.+)$", 1)
If IsArray($param) Then IniWrite($sBarName, "Buttonbar", "param" & $counter, StringStripWS($param[0], 3))
$path = StringRegExp($aBarData[$i], "(?m)^path" & $counter & "=(.+)$", 1)
If IsArray($path) Then IniWrite($sBarName, "Buttonbar", "path" & $counter, StringStripWS($path[0], 3))
$iconic = StringRegExp($aBarData[$i], "(?m)^iconic" & $counter & "=(.+)$", 1)
If IsArray($iconic) Then IniWrite($sBarName, "Buttonbar", "iconic" & $counter, StringStripWS($iconic[0], 3))
Else
ExitLoop
EndIf
$counter += 1
Wend
If $counter > 1 Then
$nBarCount +=1
EndIf
Next