web-dev-qa-db-ja.com

WindowsコマンドプロンプトからJavaScriptを実行する

2進数を10進数に変換する次の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)

しかし、残念ながら、これらはどちらも機能しません。誰かが私の間違いを指摘してもらえますか?前もって感謝します。

7
Wais Kamal

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
8
GOTO 0

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変数として使用可能になります。

画面にメッセージを表示したい場合、returnステートメントはメッセージを出力しないため、console.logをどこかに追加することもできます。

4
Ibrahim

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コマンドライン引数

2
Bassie

consolereturnステートメントのような基本的な関数はCLIでは機能しないことを知っておく必要があります。

Windowsを使用している場合は、'WScript.echo'に似たconsole.logを使用し、ファイルの実行中に次のようにしてください。

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