node.js调用bat需要用到Child Processes模块

因为bat是文件,所以需要使用execFile方法

 

如果指定了cwd,它会切换bat执行的目录,类似cd的功能,如果未指定默认为当前调用程序的目录。如果bat有输出错误,例如创建指定的文件/目录已经存在时,会返回一个错误信息时,调用bat会得到一个相关的错误信息:Error {killed: false, code: 1, signal: null}

process.execFile(url, [1, 2], {cwd:'D:/'}, function(error, stdout, stderr) {
console.log(error);
console.log(stdout);
alert(1);
});

 

如果只指定了盘符,而非一个可访问的路径时,会得到Error: spawn EBADF

process.execFile(url, [1, 2], {cwd:'D'}, function(error, stdout, stderr) {
console.log(error);
console.log(stdout);
alert(1);
});
 
输出:Error {code: "EBADF", errno: "EBADF", syscall: "spawn"}
 
二种方式可以得到调用bat的返回结果,一种是直接回调函数里获取stdout的值,还有一种是监听子进程的data事件
var child_proc = process.execFile(url, [1, 2], {cwd:dirName}, function(error, stdout, stderr) {
console.log(error);
console.log(stdout);
}); child_proc.stdout.on('data', function(data) {
console.log(data);
});
 
假设bat的文件内容是创建三个目录,其中二个目录是通过参数传递进去的(上面代码中的数组[1, 2],其中1、2就是参数)
@echo off

echo hahaniu~~~

mkdir %1
mkdir %2
mkdir aa

执行上面的代码后,会在指定的目录下(也就是代码中cwd参数的值)创建相应的目录,其中stdout将得到“hahaniu~~~”的输出

 
 
除了execFile方法外,还有exec方法亦能达到目的。用exec分解调用的文件功能,如下面的示例(创建一个目录)
process.exec("mkdir " + (new Date().getTime()), function(error, stdout, stderr) {

});

 
 
如果node.js想查询注册表或者其它信息,可以直接像在dos下输入命令一下,例如查询winrar安装目录
process.exec("reg query HKEY_CLASSES_ROOT\\WinRAR\\shell\\open\\command /ve", function(error, stdout, stderr) {
var path = stdout.match(/(\"[^\"]+\")/)[1] console.log(path);
});

 
 
 
自此,以前用hta的工具都可以用node-webkit替代了
 
【参考资料】

windows下node.js调用bat的更多相关文章

  1. Windows下Node.js+Express+WebSocket 安装配置

    Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...

  2. Windows下Node.js的安装与配置

    一.下载和安装 1. 前往官网https://nodejs.org/或https://nodejs.org/en/download/下载最新推荐版的Node.js,本文使用10.13.0版本. 对于W ...

  3. Windows下node.js安装及环境配置

    1. 安装 官网下载node.js的安装版,一路next,中间可以自定义安装路径 完成后安装目录内容如下 cmd下检查是否安装成功 新版Node.js已自带npm,所以安装Node.js时会一起安装, ...

  4. windows下node.js+sublime中安装coffeescript

    node.js中安装Coffeescript 1.我的node.js安装目录 2.node.js 全局模块所在目录   3.node.js安装coffeescript npm install -g c ...

  5. Windows下Node.js开发环境搭建-合适的开发环境

    1)生产环境中的Node.js应用 Windows + Linus 2)虚拟机工具 VirtualBox 虚拟机CentOS安装 3)xShell与xFtp(windows到linux文件传输) 4) ...

  6. 【Javascript】Windows下Node.js与npm的安装与配置

      1:先下载Node.js,网站https://nodejs.org/en/,左侧为稳定版,右侧为最新版,推荐稳定版 2:Node.js安装,运行下载后的.msi文件,一路下一步就可以了,我选择的安 ...

  7. Windows下Node.js开发环境搭建

    1.http://nodejs.org/下载node.js运行环境安装 2.打开DOS命令行 .安装express框架 1 >npm install express 末尾显示如下为安装成功 .安 ...

  8. Windows 下Node.js开发环境配置

    第一步:安装VirtualBox(以管理员身份安装) 1.安装完成后,打开VirtualBox,点击“新建”按钮,输入信息,“下一步”(名称可任意) 2.设置内存为1024MB,“下一步”—>“ ...

  9. windows 下 node.js 和 express 的安装

    下载 node 下载和安装 下载地址 https://nodejs.org/en/ 下载文件 node-v4.5.0-x64.msi nodejs 安装 express -g 代表全局安装 npm i ...

随机推荐

  1. maven-replacer-plugin 静态资源版本号解决方案(css/js等)

    本文介绍如何使用 maven 的 com.google.code.maven-replacer-plugin 插件来自动添加版本号,防止浏览器缓存. 目录 1.解决方案 2.原始文件和最终生成效果 3 ...

  2. Java编程的逻辑 (45) - 神奇的堆

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  3. tidb 升级步骤

    1.检查ansible版本,正常情况下,2.1 rc3需要兼容ansible 2.5以上的版本 $ ansible --version 2.检查python两个模块jinja2需要升级到2.9.6或以 ...

  4. 【LOJ】#2111. 「JLOI2015」战争调度

    题解 记录一个数组dp[i][S][k]表示第i个点,它上面所有的点的状态(参军或者后勤)可以用状态S来表示,一共有k个平民参军的最大收益,当然数组开不下,可以用vector动态开 我们对于每个平民枚 ...

  5. 2018 Arab Collegiate Programming Contest (ACPC 2018) E - Exciting Menus AC自动机

    E - Exciting Menus 建个AC自动机求个fail指针就好啦. #include<bits/stdc++.h> #define LL long long #define fi ...

  6. ClouderaManager中Event Server报No such file or directory

    错误日志如下: 2015-06-24 06:13:10,176 ERROR com.cloudera.cmf.eventcatcher.server.EventCatcherService: Erro ...

  7. php 会话控制(关于cookie的维护与生命周期)

    cookie是在服务器端被创建并写回到客户端浏览器,浏览器接到响应头中关于写cookie的指令则在本地临时文件中. cookie内容的存储是键值对的方式,键和值都只能是字符串. 函数原型:setcoo ...

  8. String、Date和Timestamp的互转

    begin 2018年8月17日19:09:49 String.Date和Timestamp的互转 String和Date的互转 关于String和Date的互转,在java8后会有不同.因为java ...

  9. poj-1459-最大流dinic+链式前向星-isap+bfs+stack

    title: poj-1459-最大流dinic+链式前向星-isap+bfs+stack date: 2018-11-22 20:57:54 tags: acm 刷题 categories: ACM ...

  10. Redis五大类型操作使用以及订阅发布功能

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...