【问题标题】:Running JavaScript from the windows command prompt从 Windows 命令提示符运行 JavaScript
【发布时间】:2017-01-21 09:13:07
【问题描述】:

我编写了以下 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)

但不幸的是,这些都不起作用。有人可以指出我的错误吗?提前致谢。

【问题讨论】:

  • 您有一个 IIFE ...num 参数将始终为 undefined,因为您编写了 IIFE ...除此之外...在命令行上运行 javascript .. . 你如何建议这个工作?当你这样做时,你会得到任何错误吗?我猜你正在运行 linux,对吧
  • 但是..你有什么工具可以从命令行解析和执行JS吗?像 NodeJS 还是类似的?除此之外,您有一个 IIFE,因此不存在函数声明(即,bin_dec 无法从外部访问)。另外你不需要eval。

标签: javascript command-line cmd


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在 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,因为返回语句不会打印消息。

    【讨论】:

      【解决方案3】:

      假设你在 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 - Arguments Property

      SS64 - WScript Arguments

      SS64 - VBScript Command line arguments

      【讨论】:

        【解决方案4】:

        您必须知道,像console 或return 语句这样的基本函数在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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-10
          • 2018-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多