Обновил RunMe.js.
Что нового:
- расширения файлов сравниваются регистро-независимо;
- добавлен Python и Free Pascal (предполагается, что при установке они зарегистрировались в системе - иначе в файле RunMe.js нужно указать к ним полный путь);
- добавлен внешний вызов Call("Scripts::Main", 1, "RunMe.js", "1"), позволяющий изменить строку запуска - например, добавить какие-то параметры. Изменённая строка запуска сохраняется для последующего использования.
Вот такие вот пироги с котятами
Posted: Thu Nov 29, 2012 12:06 pm
by VladSh
DV Вопрос по Вашему скрипту.
Лучше бы сделать задание параметров в обычном ini-файле:
а уже внутри скрипта считывать их в oCommands, чтобы пользователи не переколбашивали скрипт или не делали себе копий...
А так параметры ini-файла по опыту пользователей постепенно бы добавлялись (можно вести его там же, рядом со скриптом, чтобы каждый мог выбрать те строки, что ему подходят).
Posted: Thu Nov 29, 2012 12:22 pm
by DV
В oCommands задаются не только пары "расширение" : "команда", но и пары "расширение" : ":внутренняя_функция", для которых пишется реализация внутренней функции. Как пример, немаленькая функция run_cpp(filePathName). Сейчас это всё находится в одном файле RunMe.js. Выносить эти вещи в отдельный файл, который затем ещё надо как-то обработать? Не уверен.
P.S.
Благодаря этому вопросу заметил, что сейчас (пока) нет возможности передавать аргументы в тот же run_cpp(). Похоже, надо будет показывать окно запроса командной строки непосредственно перед запуском команды на исполнение, а не для строки из oCommands непосредственно.
P.P.S.
Ответ по поводу Паскаля. Реализация мне представляется похожей на используемую в run_cpp() - конкретнее см. переменные cmd1 и cmd2.
В случае Паскаля это будет выглядеть предположительно так:
var cmd1 = "fpc.exe \"%f\""; // compile
var cmd2 = "cd \"%d\" && \"%n.exe\""; // current dir = file dir && run .exe
var cmd = "cmd /c" + cmd1 + " && " + cmd2;
cmd = prepareCommand(cmd, filePathName); // pre-process %f, %n etc.
runCommand(cmd); // run
Наличие "&&" между cmd1 и cmd2 - т.е. между компиляцией и запуском файла - предполагает, что в случае ошибки компиляции fpc возвратит код ошибки и следующая часть команды (cmd2) не будет вызвана.
Posted: Thu Nov 29, 2012 12:39 pm
by VladSh
Просто хотел как бы поудобнее. Карячить скрипт, по моему, плохая идея. Тогда уж ограничить задачи скрипта компиляцией (у Infocatcher'а есть прекрасный скрипт для запуска обычных прог), и для каждого колбасить отдельные файлы. Можно даже в тех же ini задавать частоиспользуемые списки параметров и выводить их в диалоге либо меню для выбора. А используемый тэг-компитятор-ini-файл задавать в параметрах запуска скрипта. Это было бы удобно.
Posted: Fri Nov 30, 2012 9:51 pm
by KDJ
FindFiles.js
Bugs fixed:
- detection of binary files,
- selection of text in a file opened by double click.
Posted: Sat Dec 01, 2012 6:21 pm
by Lenchik
Хотелось бы скрипт, вставляющий дату в формате RFC822 (только с четырёхциферной записью года). Может быть модификацию стандартного InsertDate или unixTime.
Пока обхожусь insertDateTemplateExample с такими настройками (в итоге часовой пояс прописан жестко вручную):
DV wrote:
P.P.S.
Ответ по поводу Паскаля. Реализация мне представляется похожей на используемую в run_cpp() - конкретнее см. переменные cmd1 и cmd2.
В случае Паскаля это будет выглядеть предположительно так:
var cmd1 = "fpc.exe "%f""; // compile
var cmd2 = "cd "%d" && "%n.exe""; // current dir = file dir && run .exe
var cmd = "cmd /c" + cmd1 + " && " + cmd2;
cmd = prepareCommand(cmd, filePathName); // pre-process %f, %n etc.
runCommand(cmd); // run
.
Попробовал.
1) Если паскалевский файл в корне диска, то получаем следующее сообщение - ""cels1e.exe"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
2) Если паскалевском файле есть операторы ввода данных с клавиатуры, то он компилируется и зависает в процессах без вывода чего либо на экран.
Posted: Tue Dec 04, 2012 9:01 am
by booleg
DV wrote:
P.P.S.
Ответ по поводу Паскаля. Реализация мне представляется похожей на используемую в run_cpp() - конкретнее см. переменные cmd1 и cmd2.
В случае Паскаля это будет выглядеть предположительно так:
var cmd1 = "fpc.exe "%f""; // compile
var cmd2 = "cd "%d" && "%n.exe""; // current dir = file dir && run .exe
var cmd = "cmd /c" + cmd1 + " && " + cmd2;
cmd = prepareCommand(cmd, filePathName); // pre-process %f, %n etc.
runCommand(cmd); // run
.
Попробовал.
1) Если паскалевский файл в корне диска, то получаем следующее сообщение - ""cels1e.exe"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
2) Если паскалевском файле есть операторы ввода данных с клавиатуры, то он компилируется и зависает в процессах без вывода чего либо на экран.
Posted: Tue Dec 04, 2012 10:02 am
by DV
booleg,
Вызов ":run_pas(\"%f\")" должен использовать параметр %f, чтобы передать полный путь к файлу, а не только имя и расширение.
В качестве cmd2 (внутри function run_pas(filePathName)) можно попробовать
"rundll32.exe shell32,ShellExec_RunDLL \"%d\%n.%e\"". Не бойтесь проявлять фантазию
Posted: Tue Dec 04, 2012 12:09 pm
by booleg
DV wrote:booleg,
В качестве cmd2 (внутри function run_pas(filePathName)) можно попробовать
"rundll32.exe shell32,ShellExec_RunDLL "%d\%n.%e"". Не бойтесь проявлять фантазию
Так как скрипты никогда не писал, то именно фантазия и интуиция меня и направляет
Такой вариант я пробовал раньше. Компилировал отдельно, а запускал так: