web-dev-qa-db-fra.com

Exécution de JavaScript à partir de l'invite de commande Windows

J'ai écrit le code JavaScipt suivant qui convertit un nombre binaire en un nombre décimal:

(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;
})()

Je veux pouvoir exécuter ce code à partir de la ligne de commande. Le nom du fichier est converter.js et la commande Invite window est exécutée dans le même répertoire que le fichier. J'essaie d'exécuter ce code en utilisant 01001100 comme argument de la fonction. Voici mes tentatives:

$ converter.js 01001100

et

$ converter.js -01001100

et

$ converter.js bin_dec(01001100)

Mais malheureusement, aucune de ces œuvres. Quelqu'un peut-il s'il vous plaît signaler mon erreur? Merci d'avance.

7
Wais Kamal

1) Installez Node.js si vous ne l’avez pas encore fait.

2) Modifiez votre fichier converter.js comme suit:

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

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

3) Ouvrez une nouvelle invite de commande dans le dossier contenant votre script et exécutez-la.

$ node converter.js 01001100
8
GOTO 0

Dans nodejs, en supposant que vous l'avez déjà installé depuis que vous essayez d'exécuter JavaScript à partir de cmd, vous devrez vous reporter au tableau process.argv pour obtenir les arguments passés dans la ligne de commande.

Donc, votre code devra ressembler à ceci:

(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])

Notez que process.argv[2] est transmis à la fonction. Cela rendra le premier argument disponible en tant que variable num dans votre fonction.

Vous pouvez également ajouter un console.log quelque part si vous souhaitez que les messages soient affichés à l'écran, car l'instruction de retour n'imprimera pas les messages.

4
Ibrahim

En supposant que vous utilisez Windows, vous pouvez l'appeler comme suit: 

(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;
})()

Où tous les paramètres passés dans la fonction sont stockés dans WScript.arguments.

Cependant, cela ne produira pas la valeur return dans l'invite de commande. Vous souhaiterez peut-être le tester avec ce fichier .js

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

Voir ces liens pour plus de détails: 

MSDN - Arguments Property

SS64 - Arguments WScript

SS64 - Arguments de la ligne de commande VBScript

2
Bassie

Vous devez savoir que peu de fonctions de base, telles que les instructions console ou return, ne fonctionneront pas dans la CLI. 

Si vous utilisez Windows, utilisez 'WScript.echo', qui est similaire à console.log. Lorsque vous exécutez le fichier, veillez à le faire comme ci-dessous.

Cscript.exe yourpath input_params par exemple Cscript.exe converter.js 01001100

Donc, votre code devrait être

(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);
})();

et pour l'exécuter devrait être

Cscript.exe converter.js 01001100

espérons que cela vous aide! Pour plus d'informations sur les méthodes CLI, visitez le lien suivant 

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

1