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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
nodejs中实现sleep功能实例
Mar 24 NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 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
一个基于PDO的数据库操作类
2011/03/24 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
python多进程操作实例
2014/11/21 Python
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
品质管理部岗位职责范文
2014/03/01 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
电气工程自动化求职信
2014/03/14 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
python某漫画app逆向
2021/03/31 Python
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
golang中字符串MD5生成方式总结
2021/07/04 Golang
欧元符号 €
2022/02/17 杂记
基于Python实现将列表数据生成折线图
2022/03/23 Python
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS