文件的Javascript自动化移动到另一个文件夹

时间:2015-04-02 02:33:52

标签: javascript jquery node.js gruntjs npm

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

Ex:我有一个名为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为此编写脚本。请给我一些想法或一些与此相关的示例脚本。

1 个答案:

答案 0 :(得分: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来做一些自动作业。