Страница 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
Добавлено: Ср апр 28, 2010 15:11
Flasher
Andrey_A писал(а):других обменников не знал

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

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

Как-то несуразно звучит, организуешь для меня, а пользоваться будешь сам.))
Тут хотя бы выложи для проформы.

Добавлено: Ср апр 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 огроооомное спасибо!!!