Для того, чтобы добавить новый макрос в UMX, вы должны поместить специальный файл описания скрипта в папку /Scripts, расположенную там, где установлен UMX.
Файл должен иметь расширение *.s и именть следующую структуру:
@SCRIPT <scriptname>
@LANG <langid>
<script definition>
В одном файле может быть несколько определений, следующих друг за другом. Признак начала определения - строка @SCRIPT <scriptname>
<scriptname> - это уникальное имя макроса, в The Bat он будет доступен с приставкой "FN", например, скрипт под названием TEST можно будет вызывать из шаблона при помощи макроса %FNTEST.
<langid> - это идентификатор языка: JS - Jscript, VB - VBscript, PAS - pascal.
<script definition> - это сам текст скрипта в соответствии с синтаксисом выбранного в секции @LANG языка.
Например, чтобы создать макрос %FNTESST, который вернёт "Hello, World", выполните следующее:
Поместите файл TESST.S в папку /Scripts и перезапустите The Bat!
@SCRIPT TESST
@LANG JS
hello();
function hello(){
return 'Hello, World';
};
А такой скрипт:
@SCRIPT TESST
@LANG JS
'Hello, World'
Вернёт тот же самый результат.
Чтобы иметь возможность использовать в скрипте аргументы, передаваемые макросу в скобках (например, %FNTESST("Hello","123455")), вы должны выхвать специальную функцию GetParams(), инициализирующую и заполняющую значениями два служебные переменные - ParamCount и ParamStr.
ParamCount содержит число переданных скрипту аргументов. Например, для %FNTESST(1,"2","test") ParamCount будет равняться 3, а для %FNTESST - 0.
ParamStr[n] - это массив значений аргументов, первый аргумент - это ParamStr[1] и т. д.
Например, следующий скрипт выводит список переданных ему параметров:
@SCRIPT JSPL
@LANG JS
hello();
function hello(){
GetParams();
var i,s;
s='';
for(i=1;i<=ParamCount;i++)s+=i+' - '+ParamStr[i]+'\n';
return s;
};
При выполнении %FNJSPL('one','two','three') в шаблоне вы получите:
1 - one
2 - two
3 - three
И в завершении этой краткой статьи приведу макрос, вычисляющий количество секунд между двумя датами (со временем):
@SCRIPT SECSBETWEEN
@LANG JS
calc();
function calc(){
GetParams();
if(ParamCount<2)return "Wrong number of parameters";
d1=new Date(ParamStr[1]);
d2=new Date(ParamStr[2]);
dt=Math.abs((d1.getTime()-d2.getTime())/1000);
return Math.round(dt);
};
Теперь при выполнении %FNSECSBETWEEN("18/02/1981 14:00:15","25/01/1985 16:00:00")
вы узнаете, что между 18 февраля 1981 года, 14:00:15 и 25 января 1985 года, 16:00:00 содержится 144644385 секунд.
Желаю успехов в тестировании, присылайте интересные макросы мне на ящик, я включу их в дистрибутив следующих версий UMX.
|