2015-04-02 101 views
0

我在我的服务器中包含一些文件的文件夹。这些都是自动化的,这意味着我们每天都会自动获取新文件,覆盖旧文件。所以想要为这些数据进行备份。如何通过在复制时用当前日期重命名文件来将所有这些文件复制到另一个文件夹中。Javascript自动化文件移动到另一个文件夹

例如:我有一个名为folder1的文件夹,其中包含4个文件。此文件夹的路径是home/webapps/project1/folder1

aaa.csv 
bbb.csv 
ccc.csv 
ddd.csv 

现在我想所有这四个文件复制到名为folder2不同的文件夹。此文件夹的路径是home/webapps/project1/folder2。在复制这些文件时,我想重命名每个文件并将当前日期添加到文件中。所以我的文件名folder2应该是..

aaa091012.csv 
bbb091012.csv 
ccc091012.csv 
ddd091012.csv 

我想为此编写一个脚本使用Javascript。请给我一些想法或与此相关的一些示例脚本。

+0

这是标记'gruntjs'。解决方案是否需要使用grunt? – 2015-04-02 02:47:40

+0

@positlabs是啊,如果我们使用咕噜它会很好 – 2015-04-02 02:54:26

+0

我假设你搜索npmjs.org并尝试了你找到的东西?他们是什么,他们怎么不够好? – 2015-04-02 03:52:25

回答

0

你可以试试这个代码:

var fs = require('fs'); 
var path = require('path'); 

function dateFormat(){ 
    var date = new Date(); 
    var year = (date.getFullYear() + '').slice(2); 
    var month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1); 
    var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); 
    return year+month+day; 
} 
function moveAndRename(sourceDir, destDir){ 
    fs.readdir(sourceDir, function(err, files){ 
     if(err) 
      return err; 
     else { 
      files.forEach(function(file){ 
       var dotIndex = file.lastIndexOf("."); 
       var name = file.slice(0, dotIndex); 

       var newName = (name + dateFormat()) + path.extname(file); 

       var read = fs.createReadStream(path.join(sourceDir, file)); 
       var write = fs.createWriteStream(path.join(destDir, newName)); 
       read.pipe(write); 
      }); 
     } 
    }); 
} 

moveAndRename("/home/webapps/project1/folder1", 
       "/home/webapps/project1/folder2") 

您可以使用此NPM LIB:https://github.com/ncb000gt/node-cron,做一些工作autominate。

+0

感谢您的回复......是否有任何教程如何执行代码,并参见 – 2015-04-02 04:53:09

+0

只需将此代码保存在一个'copy.js'文件中,然后运行' node copy.js' – BlackMamba 2015-04-02 04:59:21

+0

是否可以压缩文件并通过自动解压缩到 – 2015-04-02 11:00:32

相关问题