从批处理文件访问JavaScript方法

从批处理文件访问JavaScript方法,javascript,windows,node.js,batch-file,Javascript,Windows,Node.js,Batch File,我已经读过多篇类似的文章,这些文章提出了将批处理文件和javascript相结合的可能性。我这里的问题是,是否可以在.bat文件中使用.js文件的方法?例如,使用以下方法定义js文件- test.js 测试蝙蝠 输出 3类似这样的东西(虽然很冗长,但这就是我能想到的)? 这不适用于javascript,但适用于jscript和jscript.net(但要求有一点不同的代码) 有几种方法可以做到这一点。下面的方法非常简单: test.js 测试蝙蝠 输出 在这种情况下,%eval%后面的表达式不能

我已经读过多篇类似的文章,这些文章提出了将批处理文件和javascript相结合的可能性。我这里的问题是,是否可以在.bat文件中使用.js文件的方法?例如,使用以下方法定义js文件-

test.js 测试蝙蝠 输出 3

类似这样的东西(虽然很冗长,但这就是我能想到的)? 这不适用于javascript,但适用于jscript和jscript.net(但要求有一点不同的代码)


有几种方法可以做到这一点。下面的方法非常简单:

test.js 测试蝙蝠 输出 在这种情况下,
%eval%
后面的表达式不能包含空格或特殊字符。为此,只需将表达式括在引号中:

%eval% "add(1,2) * 4 + sub(1,2)"

如果您使用jscript命令行参数来选择函数…这适用于jscript-不适用于javascript。好的,但首先这是可能的吗?感谢Aachini提供了完成此工作的简单方法。但我只是想知道是否有可能像“mocha”那样直接访问特定的js函数。目前我正在使用mocha测试我的js方法功能,但希望直接从命令行执行这些方法。
add(1, 2); ::Or something like add 1 2
C:\>test
@if (@X)==(@Y) @end /* JScript comment
    @echo off

    call :add 1 2
    call :subst 5 2

    exit /b %errorlevel%
    :add [ a , b ]
        cscript //E:JScript //nologo "%~f0" add %~1 %~2 
    exit /b %errorlevel%

    :subst [ a , b ]
        cscript //E:JScript //nologo "%~f0" subst %~1 %~2 
    exit /b %errorlevel%






@if (@X)==(@Y) @end JScript comment */

var ARGS = WScript.Arguments;



function subst(a,b){
    WScript.Echo(a - b);
}

function add(a,b){
    WScript.Echo(a + b);
}

switch(ARGS.Item(0).toLowerCase()){
  case "subst":
    subst(ARGS.Item(1),ARGS.Item(2));
    break;
  case "add":
    add(ARGS.Item(1),ARGS.Item(2));
    break;
  default:
    WScript.Echo("wrong function");
    WScript.Quit(1);

}
function add(a, b){ return a+b;}
function sub(a, b){ return a-b;}

WScript.Echo(eval(WScript.Arguments(0)));
@echo off

set eval=cscript //nologo test.js 

%eval% add(1,2)
%eval% sub(1,2)
C:\> test
3
-1
%eval% "add(1,2) * 4 + sub(1,2)"