从批处理文件访问 JavaScript 方法
Accessing JavaScript method from a batch file
我经历了多个 post,例如 Embedded js in a batch file,这表明可以合并批处理文件和 javascript。我这里的问题是——是否可以在.bat文件中使用.js文件的方法?例如 - 定义一个 js 文件,使用如下一些方法 -
test.js
add:function(a, b){ return a+b;}
test.bat
add(1, 2); ::Or something like add 1 2
输出
C:\>test
3
像这样的东西(很冗长,但这是我能想到的)?
这不适用于 javascript 但适用于 jscript 和 jscript.net (但需要一些不同的代码)
@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);
}
有几种方法可以做到这一点。下面的方法很简单:
test.js
function add(a, b){ return a+b;}
function sub(a, b){ return a-b;}
WScript.Echo(eval(WScript.Arguments(0)));
test.bat
@echo off
set eval=cscript //nologo test.js
%eval% add(1,2)
%eval% sub(1,2)
输出
C:\> test
3
-1
在这种情况下,%eval%
后面的表达式不能包含空格和特殊字符。为此,只需将表达式括在引号中:
%eval% "add(1,2) * 4 + sub(1,2)"
我经历了多个 post,例如 Embedded js in a batch file,这表明可以合并批处理文件和 javascript。我这里的问题是——是否可以在.bat文件中使用.js文件的方法?例如 - 定义一个 js 文件,使用如下一些方法 -
test.js
add:function(a, b){ return a+b;}
test.bat
add(1, 2); ::Or something like add 1 2
输出
C:\>test
3
像这样的东西(很冗长,但这是我能想到的)? 这不适用于 javascript 但适用于 jscript 和 jscript.net (但需要一些不同的代码)
@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);
}
有几种方法可以做到这一点。下面的方法很简单:
test.js
function add(a, b){ return a+b;}
function sub(a, b){ return a-b;}
WScript.Echo(eval(WScript.Arguments(0)));
test.bat
@echo off
set eval=cscript //nologo test.js
%eval% add(1,2)
%eval% sub(1,2)
输出
C:\> test
3
-1
在这种情况下,%eval%
后面的表达式不能包含空格和特殊字符。为此,只需将表达式括在引号中:
%eval% "add(1,2) * 4 + sub(1,2)"