exécuter un fichier de commandes windows à partir de node.js
suis en train de lancer un test.fichier bat à l'intérieur de node.js
voici le code
var exec = require('child_process').execFile;
case '/start':
req.on('data', function (chunk) {});
req.on('end', function () {
console.log("INSIDE--------------------------------:");
exec('./uli.bat', function (err, data) {
console.log(err);
console.log(data);
res.end(data);
});
});
break;
lors de l'exécution de cette node.js fichier suis
INSIDE--------------------------------:
{ [Error: Command failed: '.' is not recognized as an internal or ext
nd,
operable program or batch file.
] killed: false, code: 1, signal: null }
- Il serait mieux si vous avez posté l'intégralité de sortie, au lieu d'une étrange partie recadrée :). Aussi, que
./
chemin semble très unixy - c'est la sortie complète
- Avez-vous essayé sans le
./
dans le chemin d'accès à l' .fichier bat?
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution pour elle.. et sa fonctionne très bien pour moi. Cela ouvre une nouvelle fenêtre de commande et exécute mon principal nœud de JS dans le processus enfant. Vous ne devez pas donner le chemin complet de cmd.exe.
J'ai été une erreur.
.bat
fichiers.spawn('cmd.exe',["/c", `..\\BINARIES\\t1.bat`],{env: process.env});
La façon la plus simple que je sais pour l'exécuter est code suivant :
Vous pouvez remplacer
"path/to/your/file.bat"
par__dirname + "/file.bat"
si votre fichier est dans le répertoire de votre script par exemple.Error: Command failed: E:/devProj/instager/start.bat ERROR: Input redirection is not supported, exiting the process immediately. at ChildProcess.exithandler (child_process.js:217:12) at emitTwo (events.js:106:13) at ChildProcess.emit (events.js:194:7) at maybeClose (internal/child_process.js:899:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5) killed: false, code: 1, signal: null, cmd: 'E:/devProj/instager/start.bat'
Dans windows, je ne préfère pas spawn comme il en crée un nouveau cmd.exe et nous devons passer par la .bat ou .fichier cmd en tant qu'argument.'exec' est une meilleure option. L'exemple ci-dessous:
Veuillez noter que dans windows, vous avez besoin pour passer chemin avec double \ par ex. C:\path\batfilename.bat
Un moyen plus facile je sais pour l'exécution qui est le code suivant :