const fs = require("fs")
const path = require("path") main(); function main() {
const rootRealPath = path.resolve(__dirname);
const newDirName = 'newFile'; // 移动目标文件名
const newDirPath = path.resolve(__dirname + '/' + newDirName); // 新的文件路径
const filterFormatList = ['txt']; // 位移的文件后缀名
const notFilterNames = [newDirName, 'filterFile.js']; // 不进行位移的文件 或者文件夹 或 文件格式
let moveFileCount = 0; // 位移文件总数
let eachFileCount = 0; // 遍历文件总数 // 如果页面中没有 newFile 那么直接创建
if (!checkHasFile(rootRealPath, newDirName)) {
console.log(`如果没有${newDirName}文件夹 那么直接创建一个文件夹`);
fs.mkdirSync(newDirName);
}
readDirSync(rootRealPath);
console.log(`任务执行完成 操作文件总数为: ${eachFileCount} 位移文件总数为: ${moveFileCount}`); function readDirSync(filePath) {
const pa = fs.readdirSync(filePath); for (let i in pa) {
let ele = pa[i];
let index = i;
if (notFilterNames.indexOf(ele) !== -1) { // 如果是位移后目标文件夹 则不进行操作
break;
}
var info = fs.statSync(filePath + "/" + ele); // 判断是文件夹 还是文件
if (info.isDirectory()) {
// 递归遍历所有文件夹, 将文件夹中的文件取出
readDirSync(filePath + "/" + ele);
} else {
var splitArea = ele.split('.');
var fileName = splitArea.slice(0, -1); // 不带有格式的文件名
var fileFormat = splitArea.slice(-1); // 文件格式
eachFileCount++;
if (filterFormatList.indexOf(splitArea[splitArea.length - 1]) !== -1) {
moveFileCount++;
if (checkHasFile(newDirPath, ele)) {
fs.renameSync(path.resolve(`${filePath}/${ele}`), path.resolve(`${newDirPath}/${fileName}_${(new Date()).getTime()}.${fileFormat}`));
console.log('加时间戳 然后移动', ele);
} else {
console.log('没有同名文件 直接移动', ele);
fs.renameSync(path.resolve(filePath + "/" + ele), path.resolve(newDirPath + '/' + ele));
}
} else {
console.log('非 位移文件 不进行位移');
} }
}
} } // 判断目标文件夹中是否有相同名称的文件
function checkHasFile(filePath, file) {
var pa = fs.readdirSync(filePath);
if (!pa || pa.length === 0) {
return false;
}
return (pa.indexOf(file) !== -1);
}

  

nodejs 将不同文件夹中的视频整合到一个文件夹中的更多相关文章

  1. shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。

    shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...

  2. 工具:从一个文件夹中复制jar到另一个文件夹中

    工具类:从一个文件夹中复制jar到另一个文件夹中 需要的小伙伴可以试一试,很爽哦,有时候真的很需要! 需求:当我们拿到一个maven项目时,而maven项目的jar包都是通过pom.xml文件管理的, ...

  3. Eclipse中的工程引入jar包后没有整合到一个文件夹而是全部在根目录下显示

    Eclipse中的工程引入jar包后没有整合到一个文件夹而是全部在根目录下显示 解决方案: 1,在Eclipse中,点击window-->Preferences-->Java-->B ...

  4. 在C#中如何确定一个文件是不是文本文件,以及如何确定一个文件的类型

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在C#中如何确定一个文件是不是文本文件,以及如何确定一个文件的类型.

  5. 将一个文件中的内容,在另一个文件中生成. for line in f1, \n f2.write(line)

    将一个文件中的内容,在另一个文件中生成. 核心语句: for line in f1: f1中的所有一行 f2.write(line)                                  ...

  6. SQLSERVER将一个文件组的数据移动到另一个文件组

    SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...

  7. nodejs中require的路径是一个文件夹时发生了什么

    node中使用require的时候如果路径是一个文件夹时,或者特殊的情况require('..');require('.'); 这是node实战这本书里说的情况,但是我在node6.9版本中发现不完全 ...

  8. spark中saveAsTextFile如何最终生成一个文件

    原文地址: http://www.cnblogs.com/029zz010buct/p/4685173.html 一般而言,saveAsTextFile会按照执行task的多少生成多少个文件,比如pa ...

  9. Excel表格中依据某一列的值,将这列中一样的数据放在一个文件中。

    一需求:按照标题C的内容,一样的数据整理到一个文件中. 二.操作: 1.atl+F11弹出vb窗口 2.点击       插入===>模块   ,复制以下代码,注意这是一个表头为三行的函数(保存 ...

随机推荐

  1. Spring IoC 的实现机制

    Spring 中的 IoC 的实现原理就是工厂模式加反射机制. interface Fruit {     public abstract void eat(); } class Apple impl ...

  2. PhpStorm2019 代码自动换行

    我的版本是2019.1里面没有了Use soft wrap in editor 所以在这里新加上*.php;*.html,并且在前面选上打勾就可以了,其余类似编辑器使用类似的方法

  3. django web问题

    django生命周期 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. ...

  4. IIS配置实现反向代理(图文)

    需求: 网站在备案,本来的网站不符合要求,先反向到别的网站.原网站:test.com, 目标网站:target.com 设置反向代理的服务器一定是在原网站服务器上. 注意:iis应该是iis7及以上版 ...

  5. Gerrit - 初始配置

    1 - 插件管理 1.1 下载并安装插件 以reviewers插件为例. 在GerritForge(https://gerrit-ci.gerritforge.com/),找到对应gerrit 版本的 ...

  6. DRF概述

    目录 一. REST 1. 什么是编程? 2. 什么是REST? 二. 知识准备 1. CBV(class based view) 2. 类方法 classmethod和classonlymethod ...

  7. Swarm 集群并用 Portainer 管理

    https://blog.csdn.net/zhrq95/article/details/79430284 使用docker-proxy代理服务(所有节点): docker pull docker.i ...

  8. laravel操作mongo详细说明

    原文地址:http://returnc.com/detail/3728   一个Eloquent模型和Query构建器,支持MongoDB,使用原始的Laravel API.该库扩展了原始的Larav ...

  9. shell 编写脚本批量Ping IP

    服务器总是一下子买了很多的段的ip.通过绑定后,也不知道这些ip是否绑定成功,所以就写了一个shell脚本,把ip输好,批量ping一下,看是不是都能ping通. 脚本如下: 此外.还有一个ip文件, ...

  10. 将python工程部署到新服务器(对virtualenv工具进行环境迁移)

    将python工程部署到新服务器(对virtualenv工具进行环境迁移) # 从开发的电脑上导出 pip list 到 requirements.txt 文件pip freeze > requ ...