借Processing语言及IDE做DOS批处理的事务( 批量修改文件夹或文件的名字 )
一直想用Processing语言做一些批处理的事务,因为其自带的IDE功能紧凑易用,极度轻量,又加上Java语言的生态极具友好,处理一些windows相关操作完全可行,简单快捷。
这次就是用它做【批量修改文件夹或文件的名字】的任务。
开端
想在B站上发视频,发一个合集,找到了以往做的视频,有将近100个,但是格式都不太兼容,所以用了小丸工具箱批量压制,但是没有看清参数配置,所有的批处理过的文件的文件名最后加了“_batch”这一后缀。但是发往B站我不想要这个后缀。
解决
起初想用DOS批处理命令,但是好多细节不知,网上一查一时半会儿搞不定,所以放弃,改用设想的P5作为语言处理该问题。
Java SDK 中对各操作系统的文件管理业务都有封装,比如File类,就可以修改Windows下的文件属性,包括文件名。先要导入包:
import java.io.File;
其次是要获取一个目录对象:
String path = "E:\\Projects\\pr\\老\\新建文件夹"; //要遍历的路径
File f = new File(path); //获取文件夹对象
if (!f.exists()) {
System.out.println(path + " not exists");
return;
}
获取该对象中的子对象:
File fa[] = f.listFiles(); // 返回该路径下的所有文件夹及文件的绝对路径,返回值为File数组
然后继续,遍历其数组,对于文件对象的话获取它的名字然后做相应处理,见下:
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
if (fs.isDirectory()) { //检测对象是否是文件夹
System.out.println("文件夹: "fs.getName());
} else {
//System.out.println(fs.getName()); // getName 方法获取对象文件名
String tempstr = fs.getName().substring(0, fs.getName().length()-10); //获取相应文件名[目标文件名],去除 _batch.MP4 字符
//System.out.println(tempstr);
String tt = path + "\\"+ fs.getName();
String tt2 = path + "\\"+ tempstr +".mp4";
println(tt2);
new File(tt).renameTo(new File(tt2)); // 使用 rename 方法进行文件名更改!! 【注意】前后两路径一定是合法合理有效的,否则执行无效
}
}
搞定!效果如下两图:
原来

现在

结尾
最后的完整源码:
public static void main(String[] args) {
getFileName();
}
public static void getFileName() {
//String path = "G:/lxz/20130611"; // 路径
String path = "E:\\Projects\\pr\\老\\新建文件夹"; //要遍历的路径
File f = new File(path);
if (!f.exists()) {
System.out.println(path + " not exists");
return;
}
File fa[] = f.listFiles();
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
if (fs.isDirectory()) {
System.out.println("文件夹: "fs.getName());
} else {
//System.out.println(fs.getName());
String tempstr = fs.getName().substring(0, fs.getName().length()-10);
//System.out.println(tempstr);
String tt = path + "\\"+ fs.getName();
String tt2 = path + "\\"+ tempstr +".mp4";
println(tt2);
new File(tt).renameTo(new File(tt2));
}
}
}
别有疑惑,这就是PDE文件源码!Processing自带的文本检测器如果检测到有静态的main入口函数,那么会屏蔽掉Processing的“setup draw”框架,这样跟原生的Java程序就是一样的!源码参考:
import processing.core.*;
import processing.data.*;
import processing.event.*;
import processing.opengl.*;
import java.util.HashMap;
import java.util.ArrayList;
import java.io.File;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
public class bat4changename2 extends PApplet {
public static void main(String[] args) {
getFileName();
}
public static void getFileName() {
//String path = "G:/lxz/20130611"; // 路径
String path = "E:\\Projects\\pr\\老\\新建文件夹"; //要遍历的路径
File f = new File(path);
if (!f.exists()) {
System.out.println(path + " not exists");
return;
}
File fa[] = f.listFiles();
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
if (fs.isDirectory()) {
System.out.println("文件夹: "fs.getName());
} else {
//System.out.println(fs.getName());
String tempstr = fs.getName().substring(0, fs.getName().length()-10);
//System.out.println(tempstr);
String tt = path + "\\"+ fs.getName();
String tt2 = path + "\\"+ tempstr +".mp4";
println(tt2);
new File(tt).renameTo(new File(tt2));
}
}
}
}
当然,上述语义是在原名基础上减去,那么如果是增添也是同理的,包括直接修改文件名或者文件夹的名字,比如批量修改成序列的格式“sequimgs_00000”、“sequimgs_00001”、“sequimgs_00002”等。
希望此篇可以给予读者参考借鉴,Processing远比想象的要浪漫!~
[参考文献]
[1] https://www.cnblogs.com/xosg/p/8179066.html 【Java】对文件或文件夹进行重命名
[2] https://blog.csdn.net/u014453898/article/details/79655338 Java遍历目录下的所有文件
借Processing语言及IDE做DOS批处理的事务( 批量修改文件夹或文件的名字 )的更多相关文章
- 用DOS批处理实现FTP自动上传、下载、清理文件
用DOS批处理实现FTP自动上传.下载.清理文件 最近好像特别的忙,好久没来写点东西了,今天写了一个利用批处理程序完成FTP自动上传.下载.清理文件的程序.赶紧 记录下来,以备日后之用.功能介绍:自动 ...
- DOS下删除整个目录及下属所有文件夹及文件最好用的命令
Windows XP以上的版本,在使用DOS命令模式下删除目录(目录就是档案总管中所谓的资料夹)不是用 deltree,而是用 rmdir 指令. 在Windows XP.2000.NT下都可用rmd ...
- cmd dos bat 深度变量文件夹指定文件
echo off ::指定起始文件夹 :: 指定文件夹 set DIR = abc :: d:/abc 改脚本放在d: set DIR="%cd%" echo DIR=%DIR% ...
- dos新建文件夹 新建文件
https://jingyan.baidu.com/article/49ad8bceb0237f5834d8fa19.html 新建文件夹: mkdir kkk 新建kkk文件夹 新建文件: type ...
- DOS命令查询当前文件夹中文件数量
太牛X,太实用,因此单独记下 1. 仅统计文件数量 dir /b /a-d | find /v /c "&#@" 2. 统计文件和目录总数量 dir /b | find / ...
- dos 循环读取当前文件夹下的视频名字
@echo off for /R %%i in (*.mp4) do ( echo -isma %%~nxi ) pause
- DOS批处理高级教程(还不错)(转)
前言 目录 第二节 常用特殊符号 1.@ 命令行回显屏蔽符 2.% 批处理变量引导符 3.> 输出重定向符 4.>> 输出重定向符 ...
- DOS批处理高级教程
转载-->http://blog.csdn.net/lanbing510/article/details/7461073 前言 本教程主要引用伤脑筋版主的系列文章,同时参考引用[英雄]教程等其他 ...
- Go语言及Web框架Beego环境无脑搭建
[原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位w ...
- Go语言及Web框架Beego环境
Go语言及Web框架Beego环境无脑搭建 [原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1. ...
随机推荐
- 01编程语言简介与C++
编程语言是编程的工具 计算机系统是分层的 图1: 图2: 编程语言是软件,也是分层的 图3: 图4: 图5: 图6: visual studio.vscode .dev-c++是三种用于C++编程的集 ...
- 从底层源码深入分析Bean的实例化
生命周期的整体流程 Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确地知道该 Bean 何时被创建,何时初始化完成,以及何时被销毁. ...
- WinDbg: SOSEX 下载,加载和使用帮助
SOSex 是 SOS 的扩展,由 Steve Johnson 开发,他是微软的一个员工,开发并免费提供了 SOSex for download 的下载,但该软件并不开源. 通常,该扩展不能与其他 D ...
- trim-all-strings-elements-in-a-complex-object
package com.xxx.common.util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.Strin ...
- Win10正式专业版激活方法
首先,我们先查看一下Win10正式专业版系统的激活状态: 点击桌面左下角的"Windows"按钮,从打开的扩展面板中依次点击"设置"-"更新和安全 ...
- Qt数据库应用13-通用数据库分页
一.前言 数据库分页展示,在所有的涉及到数据库记录的项目中都是需要的,除了简单的设备信息表.用户信息表这种很少几条几十条数据量的表除外,其余的日志记录表等都需要分页展示数据,少量的数据可以滚动条下拉查 ...
- spark (三) hadoop上传文件并运行spark
目录 1. 上传文件到hdfs 2. 运行wordCount 2.1 spark-shell运行 2.2 spark-submit运行example(stand-alone) 2.3 spark-su ...
- 前端学习openLayers配合vue3(简单的创建一个地图)
首先搭建一个vue工程化环境,首先我们先来创建一个地图吧 首先我们需要下载 npm i ol 其次我们需要在main.js里面引入相关的css import 'ol/ol.css' 到现在我们就可以开 ...
- WPF 动态加载嵌入主程序的DLL
WPF 动态加载嵌入主程序的DLL,好处是节省文件数量,坏处是启动影响加载速度. 首先将DLL添加进项目,选择添加现有项,设置生成操作为"嵌入资源". 代码: public App ...
- 第一章 Java集合框架
----------------------------------------------------------------------------- Java集合框架(一)-ArrayList ...