nodejs调用cmd命令实现复制目录


Posted in NodeJs onMay 04, 2015

工作中一直需要对一些官网进行文件复制,并且替换内部的一些信息,以前都是手动操作的,或者通过自己写的firefox扩展来进行文件操作的。

现在前端有nodejs了,为什么不用nodejs写个一键式的呢~~

1.复制目录

复制文件的时候,如果直接创建一个不存在的文件目录下就不成功了。要上级目录存在才可以。(nodejs API接触时间不长,如有有误,谢谢指正)。

这样在写入文件的时候就检测一下目录是否存在,不存在则判断上级目录,之后一级一级目录创建回来,之后就可以复制文件了

var dirCache = {};//缓存减少判断
function makedir (pathStr, callback) {
  if (dirCache[pathStr] == 1) {
    callback();
  } else {
    fs.exists(pathStr, function (exists) {
      if (exists == true) {
        dirCache[pathStr] == 1;
        callback();
      } else {
        makedir(path.dirname(pathStr), function () {
          fs.mkdir(pathStr, function () {
            dirCache[pathStr] == 1;
            callback();
          })
        });
      }
    })
  }
};

2.后来还是考虑通过CMD命令“xcopy”实现,但是试了好9,直接执行,可是一直不行,有解决的,欢迎指正

var exec = require('child_process').exec;
  exec('xcopy D:\\WORK_new\\odinQuest D:\\WORK_new\\newGame /s /e /Q /Y /I',
    function (error, stdout, stderr) {
      if (error !== null) {
        //console.log('exec error: ' + error);
      }
    
  });

后来通过将CMD命令写入文件,通过call的方式调用的,就可以了。

fs.writeFile('xcopy.bat', cmdstr, function (err) {
  if (err) throw err;
  var exec = require('child_process').exec;
  exec('call "'+process.cwd()+'/xcopy.bat',
    function (error, stdout, stderr) {
      if (error !== null) {
        //console.log('exec error: ' + error);
      }
    
  });
});

嗯,代码写的也就那样,都是一步步的异步嵌套,就不放出来了,省的被笑话

以上所述就是本文的全部内容了,希望大家能够喜欢。

NodeJs 相关文章推荐
详谈nodejs异步编程
Dec 04 NodeJs
nodejs中实现路由功能
Dec 29 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
nodejs通过phantomjs实现下载网页
May 04 #NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 #NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 #NodeJs
Nodejs学习笔记之测试驱动
Apr 16 #NodeJs
Nodejs学习笔记之入门篇
Apr 16 #NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 #NodeJs
nodejs开发微博实例
Mar 25 #NodeJs
You might like
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php绘制一个扇形的方法
2015/01/24 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
jQuery实现购物车的总价计算和总价传值功能
2018/11/28 jQuery
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python实现Linux中的du命令
2017/06/12 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
上海期货面试题
2014/01/31 面试题
信息管理员岗位职责
2013/12/01 职场文书
四年级评语大全
2014/04/21 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
赢在中国观后感
2015/06/02 职场文书
高中物理教学反思
2016/02/19 职场文书
python之基数排序的实现
2021/07/26 Python
Java实现带图形界面的聊天程序
2022/06/10 Java/Android