Ru-Board.club
← Вернуться в раздел «Программы»

» Total Commander (Часть 8)

Автор: Rustamer
Дата сообщения: 10.11.2014 05:02
Andrey_A_A

Цитата:
Любой не знакомый синтаксис выглядит ужасным. bat, au3, ahk, vbs, js, css, html ...

Может я несколько жестко выразился, скорее нужно сказать, что синтаксис тяжело читаемый имхо. Без справки не разберешься даже опытным взглядом. Причину понял - командная строка. Для такого синтаксиса полезен был бы конструктор (отдельно от TCIMG). В любом случае вам, как автору, хорошо видны все недостатки и достоинства. Зато справка имхо сделана очень тщательно. Радуют примеры к каждой функции. Не нашел правда средств для работы с XML, может плохо искал.

Еще о чем давно мечтаю в TotalCMD, так это о средстве массовой замены текста в файлах. Выделил файлы, вызвал функцию, появился диалог замены с набором опций, по его закрытию произвелась массовая замена. Сторонние программы, вызываемые через контекстное меню, не слишком нравятся. Хочется чего-то более нативного, привязанного к TotalCMD. Почему такой функции нет в самом TotalCMD для меня загадка. Нельзя ли реализовать что-то подобное через ваш инструмент? Извиняюсь за
Автор: Abel11
Дата сообщения: 10.11.2014 06:01
Rustamer

Цитата:
Еще о чем давно мечтаю в TotalCMD, так это о средстве массовой замены текста в файлах.
Нельзя ли реализовать что-то подобное через ваш инструмент?

Вроде все уже реализовано в TCIMG.
Команды:
1. Поиск и замена в выделенных текстовых файлах - ввод в общем диалоге

Код: shape=4 textx=%L||[input=BOX36]!![input=BOX37]
Автор: Rustamer
Дата сообщения: 10.11.2014 06:40
Abel11
Спасибо! Подошло
Цитата:
textx=%L||[edits=BOX2]

Работает хорошо, с юникодом дружит.
Но удручает отсутствие всевозможных опций(Учет регистра, Слово целиком, Регулярки, создание bak-ов только по желанию) + раздражает фокус на нижнем поле по-умолчанию, нарушен порядок TAB-уляции между контролами.

P.S. В строке
Цитата:
textx=%L||[edits=BOX3
добавь закрывающую скобку.
Автор: oshizelly
Дата сообщения: 10.11.2014 09:32

Rustamer 04:02 10-11-2014
Цитата:
Сторонние программы, вызываемые через контекстное меню, не слишком нравятся. Хочется чего-то более нативного, привязанного к TotalCMD. Почему такой функции нет в самом TotalCMD для меня загадка.

Но ведь не может же файловый менеджер TC уметь делать всё на свете. Тогда почему такая принципиальная неприязнь к необходимости использовать специально заточенные инструменты для решения сторонних задач? Это я спрашиваю не для поспорить, ибо форум - не место для дискуссий (C), а просто хочется понять логику.


Skif_off 20:57 09-11-2014
Цитата:
один из популярных советов по [якобы] оптимизации SSD - отключать короткие имена.

Andrey_A_A 21:00 09-11-2014
Цитата:
У меня отключено в системе создание коротких имен.

А для чего их отключать? Чтобы "сэкономить ресурс SSD" или есть иные соображения? Сейчас поискал в Гугле, но не нашёл такого вредного совета.
Автор: Rustamer
Дата сообщения: 10.11.2014 10:22
oshizelly
Понимаешь, есть стандартные функции, которые должны быть обязательно, а есть то, что совершенно необязательно в файловом менеджере(это и реализуется плагинами). В TotalCMD великолепный поиск со всем необходимым, но почему-то нет поиска с заменой. Посмотри на практически любую программу с поиском - рядом с функцией поиска непременно обитает и функция замены. Скажу больше - этот функционал обычно встроен в саму функцию поиска.
Вот и здесь было бы прекрасно, если бы в диалоге поиска у сабжа была замена. Поэтому и либо ищу плагин, либо мечтаю о встроенном функционале. Хотя это всего лишь мое мнение.
Автор: coherent
Дата сообщения: 10.11.2014 13:13
Andrey_A_A

Цитата:
Может быть несколько вариантов

Спасибо, буду разбираться! Просто TCIMG еще не пользовался, так что, пожалуй, прийдется начать со справки.
Автор: Abel11
Дата сообщения: 10.11.2014 13:20
coherent

Цитата:
Спасибо, буду разбираться! Просто TCIMG еще не пользовался, так что, пожалуй, прийдется начать со справки.

Будут вопросы по TCIMG или пожелания, вот создал отдельную тему, будем сообща постигать азы и разбираться http://forum.ru-board.com/topic.cgi?forum=5&topic=47370 , чтобы не оффтопить в данной теме.
Автор: Andrey_A_A
Дата сообщения: 10.11.2014 13:24
Abel11, ОГО-ГО-ГО! Спасибо за создания темы, у меня руки не дошли бы до этого (т.к. и так запросов хватает - не успеваю все охватить и реализовать, но тема на руборде, думаю, будет не лишней). Заодно эту тему разгрузим...

oshizelly

Цитата:
А для чего их отключать? Чтобы "сэкономить ресурс SSD" или есть иные соображения? Сейчас поискал в Гугле, но не нашёл такого вредного совета.


Это поведение возникло при установке Windows7, тут описывал непонятное поведение... После установки включал, создавались, потом для эксперимента выключил. Теперь в системе часть объектов имеют короткие пути, часть не имеют. Не могу сказать как лучше, главное чтобы все работало (имею ввиду настроенные кнопки тотала).

Rustamer, coherent пожелания принимаются, теперь уж в новой теме TCIMG, можно будет обсудить существующее и добавить необходимое...
Автор: suomifinland
Дата сообщения: 11.11.2014 06:27
Ребята, перестала быть видимой одна папка в Total , она появляется ТОЛЬКО при включении "галки" "показать системные или скрытые файлы" , в "Панели управления" показ скрытых и системных файлов запрещен, в проводнике папка наблюдается, сканирование антивирусом не дало результата, в папке только Word файлы....

Как сделать ее все-таки видимой...

P.S. Проблема наблюдается как на "натуральном" Total так и на сборках...
Автор: Andrey_A_A
Дата сообщения: 11.11.2014 07:12
suomifinland, попробуйте изменить атрибуты папки ALT+A

-----------------------
Подскажите написано, что Длина командной строки не может превышать 32767 символов
А в пользовательских командах так и осталось 2047?

----------- Добавлено ---------------------

Да ограничение в 2047 символов в пользовательских командах сущетвует:

[more=Тест]Создал пользовательскую команду:

Код: [em_Command_Test]
cmd=%COMMANDER_PATH%\Utilities\Scripting\AutoIt\AutoIt3.exe "%COMMANDER_PATH%\TEST.au3"
param=парамметр1 парамметр2 парамметр3 парамметр4 парамметр5 парамметр6 парамметр7 парамметр8 парамметр9 парамметр10 парамметр11 парамметр12 парамметр13 парамметр14 парамметр15 парамметр16 парамметр17 парамметр18 парамметр19 парамметр20 парамметр21 парамметр22 парамметр23 парамметр24 парамметр25 парамметр26 парамметр27 парамметр28 парамметр29 парамметр30 парамметр31 парамметр32 парамметр33 парамметр34 парамметр35 парамметр36 парамметр37 парамметр38 парамметр39 парамметр40 парамметр41 парамметр42 парамметр43 парамметр44 парамметр45 парамметр46 парамметр47 парамметр48 парамметр49 парамметр50 парамметр51 парамметр52 парамметр53 парамметр54 парамметр55 парамметр56 парамметр57 парамметр58 парамметр59 парамметр60 парамметр61 парамметр62 парамметр63 парамметр64 парамметр65 парамметр66 парамметр67 парамметр68 парамметр69 парамметр70 парамметр71 парамметр72 парамметр73 парамметр74 парамметр75 парамметр76 парамметр77 парамметр78 парамметр79 парамметр80 парамметр81 парамметр82 парамметр83 парамметр84 парамметр85 парамметр86 парамметр87 парамметр88 парамметр89 парамметр90 парамметр91 парамметр92 парамметр93 парамметр94 парамметр95 парамметр96 парамметр97 парамметр98 парамметр99 парамметр100 парамметр101 парамметр102 парамметр103 парамметр104 парамметр105 парамметр106 парамметр107 парамметр108 парамметр109 парамметр110 парамметр111 парамметр112 парамметр113 парамметр114 парамметр115 парамметр116 парамметр117 парамметр118 парамметр119 парамметр120 парамметр121 парамметр122 парамметр123 парамметр124 парамметр125 парамметр126 парамметр127 парамметр128 парамметр129 парамметр130 парамметр131 парамметр132 парамметр133 парамметр134 парамметр135 парамметр136 парамметр137 парамметр138 парамметр139 парамметр140 парамметр141 парамметр142 парамметр143 парамметр144 парамметр145 парамметр146 парамметр147 парамметр148 парамметр149 парамметр150 парамметр151 парамметр152 парамметр153 парамметр154 парамметр155 парамметр156 парамметр157 парамметр158 парамметр159 парамметр160 парамметр161 парамметр162 парамметр163 парамметр164 парамметр165 парамметр166 парамметр167
Автор: Avada
Дата сообщения: 12.11.2014 06:13
Andrey_A_A
Alt+A — это не стандартная комбинация для открытия диалога изменения атрибутов, а пользовательская, у других на неё может быть назначено что угодно или не назначено ничего.
Автор: VSHY
Дата сообщения: 12.11.2014 13:39
Rustamer
Цитата:
Но удручает отсутствие всевозможных опций(Учет регистра, Слово целиком, Регулярки
Не по теме, но всё же. Для AkelPad есть прекрасный скрипт FindReplaceFiles.js с UI, который позволяется всё это делать легко и красиво.

Добавлено:
Ребята, подскажите пожалуйста.
Установил программу-редактор (Правка по F4) AkelPad, но конф.-файлы из меню "Конфигурация" -> "Редактировать файлы конфигурации" открываются почему-то виндовым notepad'ом.
Можно ли что-то с этим поделать или это баг?
Автор: CaptainFlint
Дата сообщения: 12.11.2014 14:24
VSHY

Цитата:
Установил программу-редактор (Правка по F4) AkelPad, но конф.-файлы из меню "Конфигурация" -> "Редактировать файлы конфигурации" открываются почему-то виндовым notepad'ом. Можно ли что-то с этим поделать или это баг?

С точки зрения Гислера это фича (чтобы файлы конфигурации гарантированно можно было открыть, даже если настройка программы-редактора выполнена с ошибкой).
Автор: addhaloka
Дата сообщения: 12.11.2014 14:30
VSHY 14:39 12-11-2014
Цитата:
Установил программу-редактор (Правка по F4) AkelPad, но конф.-файлы из меню "Конфигурация" -> "Редактировать файлы конфигурации" открываются почему-то виндовым notepad'ом.
Можно ли что-то с этим поделать или это баг?

Как вариант, создать пользовательскую команду и добавить её в меню, типа: http://s1.bild.me/bilder/120914/4328694_0.png
Или заменить Notepad на AkelPad в качестве системного редактора (можно использовать батник типа [more=такого]Запускать из папки с AkelPad.exe:
Код: @echo off
cls

setlocal
%~d0
cd "%~dp0"

chcp | find "866" >nul
if errorlevel 1 chcp 866 >nul

:_main
cls
echo.
echo [1] - Заменить Notepad на AkelPad
echo [2] - Вернуть Notepad обратно
echo.
set _choice=
set /p _choice= Нажмите [ENTER] для отмены и выхода или введите вариант [1/2] :
if "%_choice%" == "" goto _quit
if "%_choice%" == "1" goto _inst
if "%_choice%" == "2" goto _uninst
goto _main

:_inst
cls
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v "Debugger" /t REG_SZ /d "\"%cd%\AkelPad.exe\" /X /Z" /f
cls
echo.
echo Готово. Нажмите любую клавишу для выхода ...
pause >nul
goto _quit

:_uninst
cls
reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /f
cls
echo.
echo Готово. Нажмите любую клавишу для выхода ...
pause >nul
goto _quit

:_quit
endlocal
exit
Автор: Avada
Дата сообщения: 13.11.2014 07:54
VSHY
Рекомендую ещё сюда заглянуть. Переопределять можно, естественно, не только редактор, но и открываемый набор INI-файлов (у меня скриптом открывается в EmEditor не только пара wincmd.ini и wcx_ftp.ini, но и usercmd.ini).
Автор: yozhic
Дата сообщения: 13.11.2014 20:46
Rustamer

Цитата:
о чем давно мечтаю в TotalCMD, так это о средстве массовой замены текста в файлах.

Советую взглянуть на этот плагин, очень мощный, но надо приспособиться. Или вот если хотите, может Вам подойдёт маленький скрипт для этих целей, для себя писал, запускается с параметром %WL (%UL). Галку «Слово целиком» не вижу веской причины добавлять, т.к. тот же эффект достигается регуляркой \b.
Автор: SSchumi
Дата сообщения: 15.11.2014 12:57
Насчёт замены в файликах, могу посоветовать дёшево и сердито - стороннюю маленькую софтину @Text Replacer.

Можно как-то "расширить" размер истории по alt + f8? А то на данный момент у меня только 20 команд.
Автор: mig73
Дата сообщения: 15.11.2014 13:06
SSchumi

Цитата:
"расширить" размер истории по alt + f8?

В справке есть OldCmdLineCount=20 Number of old command lines stored in [Command Line History]
Автор: Plumber
Дата сообщения: 15.11.2014 19:09
Вопрос по синхронизации каталогов в отдельном окне.
Синхронизация в отдельном окне запускается кнопкой с параметрами:

Код: TOTALCMD#BAR#DATA
%COMMANDER_EXE% /S=S
%Z%X %P %T
TOTALCMD.EXE,32
Синхронизация в отдельном окне
Автор: Avada
Дата сообщения: 15.11.2014 19:49
Plumber
%Z%X "%P" "%T"
Автор: VSHY
Дата сообщения: 16.11.2014 02:53
Avada
Воспользовался Вашим вариантом.
Всем спасибо!
P.S. Может где-то в шапке сделать FAQ и туда ссылку на все ответы дать?

Добавлено:
Как-то не совсем красиво... А можно скрипту передать параметрами-аргументами имя редактора и какие файлы открывать? Если бы это знать, то я мог бы тогда чуток допилить этот скрипт.

Добавлено-2: непонятно как дебажить скрипты, запускаемые из TC, - у меня почему-то WScript.Echo ничего не выводит - игнорируется.
Автор: Avada
Дата сообщения: 16.11.2014 08:48
VSHY

Цитата:
Может где-то в шапке сделать FAQ и туда ссылку на все ответы дать?

Есть универсальные источники информации, они в шапке указаны. А в данном конкретном случае "ссылка на все ответы" малопродуктивна хотя бы потому, что ответы сами содержат ссылки на сторонние источники.

Цитата:
Как-то не совсем красиво... А можно скрипту передать параметрами-аргументами имя редактора и какие файлы открывать?

Можно указать это в самом скрипте. Там все необходимые пояснения в виде комментариев даны. (Я вообще не умею писать скрипты, но в этих делах, ИМХО, там вполне можно разобраться и без всякой квалификации.) И что именно не совсем красиво?
Автор: VSHY
Дата сообщения: 16.11.2014 14:25
Avada
Некрасиво то, когда данные либо настройки находятся внутри кода. Один из принципов написания хорошего кода и состоит в том, чтобы это всё вынести из скрипта. Например как мы пишем скрипты под AkelPad - установки передаются через аргументы-параметры (грубо говоря, как параметры командной строки, но для запуска именно этого скрипта), а скрипт уже потом обрабатывает эти параметры. Это приводит к тому, что скрипт потом не меняется - удобно копировать и не лазить в коде.
В данном случае перечень открываемых файлов и редактор можно было бы указать где-то вне скрипта (я не знаю, как в TC это организовано, то ли в меню, то ли прямо в usercmd.ini в секции скрипта).
Я глянул примеры кода forum.wincmd.ru, там тоже работают с аргументами, но непонятно, как их передавать. Нет ли у Вас ссылки на то, как TC работает со скриптами, - как передавать параметры в аргументах?
Автор: Andrey_A_A
Дата сообщения: 16.11.2014 15:45
VSHY, скрипты в Total Commander, как и в AkelPad пишут для себя/по заказу, с небольшим набором параметров (или вообще без них), а потом, если кому-то это надо ещё, расширяют.

[more=Одно из решений]
Для себя открытие файлов в AkelPad я давно решил через скрипт OpenAllFiles.vbs, который лежит в самом акеле и работает как из Total Commander, так и из AkelPad

Найти его можно на известном вам ресурсе, в архиве

http://akelpad.sourceforge.net/forum/viewtopic.php?p=23556#23556


--------------------------------------

Вот несколько кнопок для тотала:


Код: TOTALCMD#BAR#DATA
%COMMANDER_PATH%\AkelPad.exe
/Call("Scripts::Main", 1, "OpenAllFiles.vbs", `0 "%p"`)
Wcmicons.dll,1878
Открыть все файлы текущей папки в AkelPad
%COMMANDER_PATH%\
0
-1
Автор: Avada
Дата сообщения: 16.11.2014 15:56
VSHY
В TC как таковом никаких скриптов нет, они используются только как сторонние средства. И специально для работы со скриптами там никаких параметров тоже нет. А про параметры при работе с произвольными командами всё сказано, например, здесь . И лично мне совершенно всё равно, где находятся настройки, если понятно, как и где их указывать и если скрипт работает ожидаемым образом. И, между прочим, на wincmd.ru, насколько понимаю, претензий к этому решению не было, хотя скрипты всякой степени красивости там писать умеют.
Автор: VSHY
Дата сообщения: 17.11.2014 13:00
Andrey_A_A
Спасибо, увидел как параметры передаются, но это всё не то. Произвольную строку в скрипт, как я понял, не передать. Передача параметров через аргументы в TC по сравнению с AkelPad'ом реализована отстойно (может, конечно, я и ошибаюсь).

Avada
Спасибо за доку.
По поводу скрипта. "На вкус и цвет...", как говорится. Далеко не великий скриптописец (скорее даже наоборот); сделал примитивно (с т.з. ООП) , да и "тяжелее" получился скрипт, но мне так больше нравится.

[more=em_configChangeIniFiles.js (mod)]
Код: // em_configChangeIniFiles.js
// Открытие файлов настройки Total Commander в указанном в параметрах запуска скрипта редакторе либо заданным в диалоге ТС "Настройка: Правка по F4"
//
// Модификация скрипта:
// Version: 2.0 (2014.11.17)
// Автор: VladSh <vladsh на fromru тчк com>
// http://forum.ru-board.com/topic.cgi?forum=5&topic=45288&start=3680#17
//
// Оригинальный скрипт:
//     Version: 1.1
//     Автор: mozers™ <mozers@mail.ru>
//     http://forum.wincmd.ru/viewpost.php?p=61155&sid=d8cd4c2148e75a549bd0b776d864758a
// ============================================================
//
// Параметры запуска задаются в usercmd.ini в секции с именем настроящего скрипта:
//     • editors - возможные пути к файлам текстовых редакторов через ; или ,
//     • files - перечень открываемых файлов, указанных через ; или ,
//         Поддерживаемый в настоящее время перечень см. в значениях констант ниже.

// Константы для определения путей и открытия файлов
var file_wincmd_ini = 'wincmd.ini';
var file_usercmd_ini = 'usercmd.ini';
var file_wcx_ftp_ini = 'wcx_ftp.ini';
var file_ftp_ini = 'ftp.ini';
var file_wincmd_mnu = 'wincmd.mnu';

// Инициализируем нужные нам ActiveX объекты
try {
    var WshShell = new ActiveXObject('WScript.Shell');
    var fso = new ActiveXObject('Scripting.FileSystemObject');
} catch(e) {
    WScript.Echo('Для работы скрипта необходима установка Windows Script Host (WSH)!');
    WScript.Quit();
}
try {
    var TCS = new ActiveXObject('TCScript.Helper');
} catch(e) {}

// Определение путей к конфигурационным файлам
var ConfigManager = {
    lstConfigs: {},
    profileDir: '',    // местоположение файлов настройки
    
    initialize: function() {
        // wincmd.ini + определение пути к профилю
        this.lstConfigs[file_wincmd_ini] = {
            path: '',
            getPath: function() {
                if (!this.path) {
                    var envvar_commander_ini = '%COMMANDER_INI%';
                    this.path = WshShell.ExpandEnvironmentStrings(envvar_commander_ini);
                    if (this.path == envvar_commander_ini) {
                        WScript.Echo('Скрипт расчитан на работу с Total Commander верcии 6.55 или выше!');
                        WScript.Quit();
                    }
                    ConfigManager.profileDir = this.path.replace(/[^\\]*$/, '');
                }
                return this.path;
            }
        };
        
        // usercmd.ini
        this.lstConfigs[file_usercmd_ini] = {
            path: '',
            getPath: function() {
                if (!this.path) {
                    this.path = ConfigManager.profileDir + file_usercmd_ini;
                }
                return this.path;
            }
        };
        
        // wcx_ftp.ini
        this.lstConfigs[file_wcx_ftp_ini] = {
            path: '',
            getPath: function() {
                if (!this.path) {
                    this.path = ConfigManager.profileDir + file_wcx_ftp_ini;
                }
                return this.path;
            }
        };
        
        // Имя пользовательского файла FTP настроек ftp.ini
        this.lstConfigs[file_ftp_ini] = {
            path: '',
            getPath: function() {
                if (!this.path) {
                    this.path = ConfigManager.profileDir + file_ftp_ini;
                    // если не будет найден, то откроется wcx_ftp.ini
                    if (!fso.FileExists(this.path))
                        this.path = ConfigManager.getPath(file_wcx_ftp_ini);
                }
                return this.path;
            }
        };
        
        // Файл меню
        this.lstConfigs[file_wincmd_mnu] = {
            path: '',
            getPath: function() {
                if (!this.path) {
                    this.path = readINI(ConfigManager.getPath(file_wincmd_ini), 'MainMenu', '');
                    if (!/\\/.test(this.path)) {
                        this.path = WshShell.ExpandEnvironmentStrings('%COMMANDER_PATH%\\LANGUAGE\\' + this.path);
                    }
                }
                return this.path;
            }
        };
        
        /* > Алгоритмы поиска каких-либо других файлов дописываем сюда < */
        
        // Обязательное получение файлов, т.к. из них будут браться настройки
        this.getPath(file_wincmd_ini);
    },
    getPath: function(filename) {
        return this.lstConfigs[filename].getPath();
    }
};

ConfigManager.initialize();

var usercmd_ini = ConfigManager.getPath(file_usercmd_ini);

// Поиск редактора, заданного в параметрах запуска скрипта
var editorPath;
var arrEditor = readIniEx(usercmd_ini, WScript.ScriptName, 'editors', '').split(/;|,/);
if (arrEditor[0]) {
    var p = 0;
    do {
        editorPath = WshShell.ExpandEnvironmentStrings(arrEditor[p]);
        if (fso.FileExists(editorPath)) break; else editorPath = '';
        p += 1;
    }
    while (p < arrEditor.length)
}
// Если заданный вручную редактор отсутствует, то берем редактор, заданный в диалоге ТС "Настройка: Правка по F4"
if (!editorPath) {
    editorPath = readINI(ConfigManager.getPath(file_wincmd_ini), 'Editor', '').replace('none', '');
    if (editorPath) {
        if (/%1/.test(editorPath)) { // это - для тех, кто после пути к редактору дописал %1
            editorPath = editorPath.replace(/"*([^"]*)"*.*/, '$1');
        }
    }
    // Если и в настройках TC редактор не найден, пробуем взять по пути редактора Windows
    if (!editorPath || !fso.FileExists(editorPath)) {
        var editorDefault = 'notepad.exe';
        editorPath = WshShell.ExpandEnvironmentStrings('%WINDIR%\\' + editorDefault);
        if (!fso.FileExists(editorPath)) {
            WScript.Echo('Заданный редактор и ' + editorDefault + ' не найдены!');
            WScript.Quit();
        }
    }
}
// Обрамляем полный путь к редактору кавычками
if (!/^\"/.test(editorPath))
    editorPath = '"' + editorPath + '"';

// Определяем перечень файлов, которые нам нужно открывать
var arrFiles = readIniEx(usercmd_ini, WScript.ScriptName, 'files', file_wincmd_ini).split(/;|,/);

// Открываем файлы в порядке, указанном в параметрах запуска
for (var i = 0; i < arrFiles.length; i++) {
    editFile(arrFiles[i]);
}

// = = = = = = = = Ф У Н К Ц И И = = = = = = = =
// Открытие файла в редакторе
function editFile(filename) {
    var filepath = ConfigManager.getPath(filename);
    if (filepath) {
        if (fso.FileExists(filepath)) {
            WshShell.Run(editorPath + ' "' + filepath + '"', 1, false);
        }
    }
}

// Чтение заданного ключа из секции "Configuration"
function readINI(filepath, key, default_value) {
    return readIniEx(filepath, 'Configuration', key, default_value);
}

// Чтение заданного ключа из указанной секции
function readIniEx(filepath, section, key, default_value) {
    var value;
    // Если имеется установленный WSH Helper ActiveX for Total Commander (c)Volniy, то будем использовать его.
    if (TCS) {
        value = TCS.INIRead(filepath, section, key, default_value);
        value = WshShell.ExpandEnvironmentStrings(value);
    } else {
        // Если нет, то обходимся встроенными средствами
        value = default_value;
        if (fso.FileExists(filepath)) {
            if (fso.GetFile(filepath).Size > 0) {
                var file = fso.OpenTextFile(filepath, 1, false);
                var re = new RegExp('^' + key + '\s*=','i');
                while (!file.AtEndOfStream){
                    var text = file.ReadLine();
                    if (re.test(text)){
                        value = WshShell.ExpandEnvironmentStrings(text.replace(/^.*=/,''));
                        break;
                    }
                }
                file.Close();
            }
        }
    }
    return value;
}
Автор: Andrey_A_A
Дата сообщения: 17.11.2014 15:06
VSHY

Цитата:
Произвольную строку в скрипт, как я понял, не передать. Передача параметров через аргументы в TC по сравнению с AkelPad'ом реализована отстойно


Передача параметров организована стандартно и работает:
Можно передавать как параметры TC (ссылку давал), так и любые строки

[more=Один из примеров приема на vbs 6-ти параметров (как для акела, так и для тотала)]
Код: With WScript Cnt = .Arguments.Count
If Cnt > 0 Then
P1 = .Arguments(0)
If Cnt > 1 Then
P2 = .Arguments(1)
If Cnt > 2 Then
P3 = .Arguments(2)
If Cnt > 3 Then
P4 = .Arguments(3)
If Cnt > 4 Then
P5 = .Arguments(4) : If Cnt > 5 Then P6 = .Arguments(5)
End If
End If
End If
End If
End If
End With
Автор: spirit21
Дата сообщения: 18.11.2014 01:13
TC при назначении файлу атрибута hidden меняет его иконку на другую (с "!"). Как это поведение настраивается?
Автор: VSHY
Дата сообщения: 18.11.2014 03:21
Andrey_A_A

Цитата:
Один из примеров приема на vbs 6-ти параметров (как для акела, так и для тотала)
Это старо как мир. В AkelPad'е так читались аргументы тогда, когда не было GetArg... Проблема была не в чтении, а в передаче.


Цитата:
http://forum.ru-board.com/topic.cgi?forum=5&topic=45288&start=3679&limit=1&m=1#1 )
Стоило сказать "отстой" и сразу дали пример, чего я собственно и добиваюсь - передачи параметров (в данном случае через param в описании "команды"). Значит для разных пунктов меню, использующих один и тот же скрипт, надо создавать разные "команды", повторяя некоторые параметры. Про отстой беру свои слова обратно.

Кстати, пытаюсь передать через param параметры; какими только способами не пробовал:

Код: param=-editors=AkelPad.exe -files=wincmd.ini
param="-editors=AkelPad.exe -files=wincmd.ini"
param='"-editors=AkelPad.exe -files=wincmd.ini"'
param="\""-editors=AkelPad.exe -files=wincmd.ini"\""
param="-editors=AkelPad.exe" "-files=wincmd.ini"
Автор: Andrey_A_A
Дата сообщения: 18.11.2014 03:52
VSHY

Цитата:
в скрипт ничего не приходит. Геморрой какой-то...


[more=Всё нормально приходит:]1. В UserCmd.ini создаём команду

[em_my_script]
cmd=%COMMANDER_PATH%\TEST.vbs
param=-editors=AkelPad.exe -files=wincmd.ini

2. Создаём кнопку:


Код: TOTALCMD#BAR#DATA
em_my_script

wscript
Передача параметров


11859

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176

Предыдущая тема: Распечатка брошюры в Word 2003


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.