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 06 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 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中time()和mktime()方法的区别
2013/09/28 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
js实现验证码干扰(动态)
2021/02/23 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
关于Django外键赋值问题详解
2017/08/13 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
python如何运行js语句
2020/09/09 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
关于赌博的检讨书
2014/01/24 职场文书
工作鉴定评语
2014/05/04 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
财产分割协议书范本
2014/11/03 职场文书
丧事答谢词
2015/01/05 职场文书
开业典礼致辞
2015/07/29 职场文书
升学宴祝酒词
2015/08/11 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
利用Python实现模拟登录知乎
2022/05/25 Python