借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. ...
随机推荐
- 3.MySQL常用函数
常用命令 ● alter add alter table add <table_name> add <column_name> <data_type> [约束类型] ...
- ChannelInboundHandlerAdapter和SimpleChannelInboundHandler区别
ChannelInboundHandlerAdapter和SimpleChannelInboundHandler是我们在使用Netty处理Handler时候很常用的两个继承类,虽然说二者实现的功能大致 ...
- 一个GLSL Shader的格式化算法(LALR解析器)
一个GLSL Shader的格式化算法(LALR解析器) 在进行OpenGL程序开发时,我需要自行解析`string`类型的Shader代码,抽取出里面的某些变量名和subroutine名. 由于找不 ...
- 禁止所有搜索爬虫访问网站指定目录robots.txt
禁止所有搜索爬虫访问网站指定目录 用自己私人的服务器来测试吧,99买阿里云 文件放置不让爬取的网站文件夹目录里 robots.txt User-agent: * Disallow: / User-Ag ...
- 国产系统UOS上的视频监控系统
一.功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表.图文警情.窗口信息.云台控制.预置位.巡航设置.设备控制.悬浮地图.网页浏览等. 视频回放模块,包括本地回放.远程回放. ...
- Qt编写安防视频监控系统36-onvif连续移动
一.前言 时隔一年多,重新对视频监控系统的onvif内核重写,一方面为了兼容Qt6,一方面按功能分类提高效率.整体逻辑思路是一样的,主要的改动是由于Qt6不再支持QtXmlPatterns模块(其实这 ...
- RxSqlUtils(base R2dbc)
一.前言 随着 Solon 3.0 和 Solon-Rx 3.0 发布,又迎来了的 RxSqlUtils 扩展插件,用于"响应式"操作数据库.RxSqlUtils 是基于 R2db ...
- 阿里IM技术分享(十):深度揭密钉钉后端架构的单元化演进之路
本文由钉钉技术专家啸台.万泓分享,为了获得更好的阅读效果,本文已对内容进行少修订和重新排版. 1.引言 钉钉后端架构的单元化工作从2018年开始到今年,已经是第五个年头了.五年的时间,钉钉单元化迭代了 ...
- python-nmap实现python利用nmap扫描分析
目录 前言 python-nmap的基本使用 PortScanner扫描 PortScannerAsync异步扫描 python-nmap的源码分析 前言 Nmap是一个非常用的网络/端口扫描工具,如 ...
- PostGIS数据库操作简介
PostGIS数据库操作简介 PostGIS Docker安装 docker pull postgis/postgis docker run --name postgis -e POSTGRES_PA ...