繁体   English   中英

从Windows命令提示符运行JavaScript

[英]Running JavaScript from the windows command prompt

我编写了以下JavaScipt代码,它将二进制数转换为十进制数:

(function bin_dec(num) {
  var x = num;
  var result = 0;
  for (var i = 0; i < x.length; i++) {
    result += eval(x[x.length - i] * 2^i);
  }
  return result;
})()

我希望能够从命令行运行此代码。 文件名是converter.js ,我在与文件相同的目录中运行命令提示符窗口。 我试图使用01001100作为函数参数运行此代码。 以下是我的尝试:

$ converter.js 01001100

$ converter.js -01001100

$ converter.js bin_dec(01001100)

但遗憾的是,这些都不奏效。 有人可以指出我的错误吗? 提前致谢。

1)如果尚未安装Node.js ,请安装它。

2)像这样更改您的converter.js文件:

function bin_dec(num) {
  return parseInt(num, 2);
}

console.log(bin_dec(process.argv[2]));

3)在脚本所在的文件夹中打开一个新的命令提示符并运行

$ node converter.js 01001100

在nodejs中,假设您已经安装了它,因为您尝试从cmd运行javascript,则必须引用process.argv数组以获取在命令行中传递的参数。

所以你的代码需要看起来像这样:

(function bin_dec(num) {
  var x = num;
  var result = 0;
  for (var i = 0; i < x.length; i++) {
    result += eval(x[x.length - i] * 2^i);
  }
  return result;
})(process.argv[2])

注意传递给函数的process.argv[2] 这将使第一个参数作为函数内的num变量可用。

如果您希望在屏幕上显示消息,也可以在某处添加console.log ,因为return语句不会打印消息。

假设您在Windows上运行,您可以这样调用它:

(function bin_dec() {
  var x = WScript.arguments(0);
  var result = 0;
  for (var i = 0; i < x.length; i++) {
    result += eval(x[x.length - i] * 2^i);
  }
  return result;
})()

传递给函数的所有参数都存储在WScript.arguments

但是,这不会将return值输出到命令提示符,因此您可能希望使用此.js文件对其进行测试:

(function ShowAlert() {
  var x = WScript.arguments(0);
  WScript.ECho(x);
})()

有关详细信息,请参阅以下链接

MSDN - 参数属性

SS64 - WScript参数

SS64 - VBScript命令行参数

您必须知道, consolereturn语句等基本功能在CLI中不起作用。

如果您正在使用Windows,那么使用类似于console.log 'WScript.echo' ,并在执行文件时确保您这样做

Cscript.exe yourpath input_params例如Cscript.exe converter.js 01001100

所以你的代码应该是

(function bin_dec() {
    var x = WScript.arguments(0);
    var result = 0;
    for (var i = 0; i < x.length; i++) {
        result += eval(x[x.length - i] * 2^i);
    }
    WScript.echo(result);
})();

应该是运行它

Cscript.exe converter.js 01001100

希望这对你有所帮助! 有关CLI方法的更多信息,请访问以下链接

https://msdn.microsoft.com/en-us/library/2795740w(v=vs.84).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM