Страница 1 из 2

Создание .bar файлов из .txt файла с командами

Добавлено: Ср апр 28, 2010 13:45
Andrey_A
Есть текстовый файл, который является результатом Excel, который имеет всё, чтобы создать .bar файлы, помогите пожалуйста автоматически создать в папке %COMMANDER_PATH%\BARS\ .bar файлы bar1.bar, bar2.bar, bar3.bar... пытался создать скрипт, но мозгов не хватает, спасибо за понимание, ссылка для скачивания файла:
http://depositfiles.com/files/kwf6o0u0i

Добавлено: Ср апр 28, 2010 14:24
Flasher
Andrey_A
Советую не использовать deposit как средство аплоудинга. Не у всех стоит динамический IP, что чревато выводом сообщений "В настоящее время с вашего IP адреса уже идет скачивание". Для задач схожего рода предлагаю более разумные решения: zalil либо rghost.

Добавлено: Ср апр 28, 2010 14:36
Andrey_A
Flasher других обменников не знал, теперь буду знать, спасибо, вот ссылки:
http://slil.ru/29047785/6b33398f.4bd8b490/WinBars.zip
http://rghost.ru/download/1487772/54394 ... inBars.zip

Добавлено: Ср апр 28, 2010 15:11
Flasher
Andrey_A писал(а):других обменников не знал
:shock: И это говорит человек, у которого в сборке присутсвует USDownloader(да и не только)? Однако..

Добавлено: Ср апр 28, 2010 15:22
Andrey_A
Конечно знал... :D Просто не требовалось другого, тем более в моей сборке на deposit сделана команда... специально для тебя организую ещё кнопки в меню... и буду пользоваться

Добавлено: Ср апр 28, 2010 15:54
Flasher
Andrey_A писал(а):специально для тебя организую ещё кнопки в меню... и буду пользоваться
:) Как-то несуразно звучит, организуешь для меня, а пользоваться будешь сам.)) Тут хотя бы выложи для проформы. :wink:

Добавлено: Ср апр 28, 2010 16:02
Flasher
Andrey_A писал(а):Есть текстовый файл, который является результатом Excel, который имеет всё, чтобы создать .bar файлы
Всё таки стоит расшифровать для скриптологов, что подразумевается под этими словами. У каждого могут быть свои представления, о том, чем является результат Excel, и что такое "всё, чтобы создать bar-файлы". То, что очевидно для одних, для других может показаться тёмным лесом.

Добавлено: Чт апр 29, 2010 00:09
Andrey_A
Всё таки стоит расшифровать для скриптологов
Я думаю, для скриптологов будет и так всё понятно, изходя из файла,
и для тех кто его видел. Если необходимо поясню:
1. Я редактирую меню через табличный файл, что отражено подробно в теме и где есть дополнительные ссылки на скачивание:
http://forum.wincmd.ru/viewtopic.php?t= ... C%E5%ED%FE
2. Я составил второй табличный фал, который считывает из первого всё необходимое для создания дополнительных меню (про excel я писал, чтобы не было вопросов про большие строчные пробелы в файле)
3. Решение вопроса, как я его вижу, я не хочу описывать - зачем наставлять - те кто хочет помочь, тот поможет[/quote]

Добавлено: Чт апр 29, 2010 09:31
Batya
Сделать то, конечно, можно. Только нужно время.
Может быть помогу, но скоро не обещаю.

Я правильно понял, что секцией [Buttonbar] начинвется новая панель?

И хорошо бы, чтобы в файле было поменьше мусора - всяких там пустых строк и строк с содержимым "#ЗНАЧ!". Строка с "Buttoncount=" тоже ни к чему. Чем меньше в скрипте будет проверок, тем быстрее он будет готов ;)

Добавлено: Чт апр 29, 2010 09:56
Andrey_A
Batya ты прав, надо подчистить файл
1. Убрать все пустые строки
2. Убрать мусор "#ЗНАЧ!"
3. Убрать Buttoncount=
4. Можно ещё убрать и [Buttonbar] и новую панель начинать при нахождении button1= - так меньше, я думаю будет проверок
ссылка на файл без мусора:
http://rghost.ru/download/1494836/b7d9a ... leaner.zip

Добавлено: Чт апр 29, 2010 10:06
Batya
Andrey_A писал(а):4. Можно ещё убрать и [Buttonbar] и новую панель начинать при нахождении button1= - так меньше, я думаю будет проверок
[Buttonbar], думаю, лучше оставить. А ещё лучше использовать конструкцию вида [Buttonbar=Моя новая панель.bar] для имени файла панели (можно без ".bar").

Добавлено: Чт апр 29, 2010 10:07
Loopback
Набросал скрипт на 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

Добавлено: Чт апр 29, 2010 10:37
Andrey_A
Loopback! Спасибо за участие и за скорость, bar файлы делаются, единственное не хватает строк param и path, если возможно, добавь их в скрипт

Добавлено: Чт апр 29, 2010 10:42
Loopback
Точно, забыл.

Код: Выделить всё

$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

Добавлено: Чт апр 29, 2010 10:51
Andrey_A
Loopback огроооомное спасибо!!!