一直想用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批处理的事务( 批量修改文件夹或文件的名字 )的更多相关文章

  1. 用DOS批处理实现FTP自动上传、下载、清理文件

    用DOS批处理实现FTP自动上传.下载.清理文件 最近好像特别的忙,好久没来写点东西了,今天写了一个利用批处理程序完成FTP自动上传.下载.清理文件的程序.赶紧 记录下来,以备日后之用.功能介绍:自动 ...

  2. DOS下删除整个目录及下属所有文件夹及文件最好用的命令

    Windows XP以上的版本,在使用DOS命令模式下删除目录(目录就是档案总管中所谓的资料夹)不是用 deltree,而是用 rmdir 指令. 在Windows XP.2000.NT下都可用rmd ...

  3. cmd dos bat 深度变量文件夹指定文件

    echo off ::指定起始文件夹 :: 指定文件夹 set DIR = abc :: d:/abc 改脚本放在d: set DIR="%cd%" echo DIR=%DIR% ...

  4. dos新建文件夹 新建文件

    https://jingyan.baidu.com/article/49ad8bceb0237f5834d8fa19.html 新建文件夹: mkdir kkk 新建kkk文件夹 新建文件: type ...

  5. DOS命令查询当前文件夹中文件数量

    太牛X,太实用,因此单独记下 1. 仅统计文件数量 dir /b /a-d | find /v /c "&#@" 2. 统计文件和目录总数量 dir /b | find / ...

  6. dos 循环读取当前文件夹下的视频名字

    @echo off for /R %%i in (*.mp4) do ( echo -isma %%~nxi ) pause

  7. DOS批处理高级教程(还不错)(转)

    前言 目录 第二节 常用特殊符号     1.@  命令行回显屏蔽符     2.%  批处理变量引导符     3.>   输出重定向符     4.>>  输出重定向符     ...

  8. DOS批处理高级教程

    转载-->http://blog.csdn.net/lanbing510/article/details/7461073 前言 本教程主要引用伤脑筋版主的系列文章,同时参考引用[英雄]教程等其他 ...

  9. Go语言及Web框架Beego环境无脑搭建

    [原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位w ...

  10. Go语言及Web框架Beego环境

    Go语言及Web框架Beego环境无脑搭建 [原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1. ...

随机推荐

  1. 用nginx正向代理,让内网主机通过外网主机访问外网

    需求1:某几个ip的代理 server { listen 9000; # 监听端口 server_name localhost; set $url "proxy_server_doman_o ...

  2. docker部署最新6.2版Zabbix Server端

    一.安装docker,参见本博客docker安装文档. 二.启动空的mysql -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="z ...

  3. Bugku-CTF getshell

    题目: <?php define('pfkzYUelxEGmVcdDNLTjXCSIgMBKOuHAFyRtaboqwJiQWvsZrPhn', __FILE__); $cPIHjUYxDZVB ...

  4. Scrum 和我主张的管理方式的同与异

    虽然零零星星接触过scrum的一些知识,之前并没有深入了解过.这次机缘巧合,将 Jeff Sutherland 的<用一半的时间做两倍的事>拜读完毕,感觉 scrum 的做法其实很多和我自 ...

  5. JavaWeb HttpSession

    /** * 使用session共享数据 */ public class SessionDemo1 extends HttpServlet { @Override protected void doPo ...

  6. 如何用source和source结合cat << EOF 和EOF )实现template.txt模板文件变量的替换

    使用 source 和 cat << EOF 来实现 template.txt 模板文件变量的替换,你可以按照以下步骤操作: 创建 config.env 文件:包含变量定义. 创建 tem ...

  7. Qt数据库应用6-数据图文混排

    一.前言 除了能够打印基本的文字信息数据到pdf和纸张,越来越多的应用需求还要求能够导出图片,并且要支持图文混排,相当于doc文档类似,当然也不会是太复杂的,类似于打印报表一样,有表格形式的文字描述, ...

  8. 不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?

    本文由小白debug分享,原题"能 ping 通,TCP 就一定能连通吗?",下文进行了排版和内容优化. 1.引言 平时,我们想要知道,自己的机器到目的机器之间,网络通不通,一般会 ...

  9. 万字长文,一篇吃透WebSocket:概念、原理、易错常识、动手实践

    本文由作者"阿宝哥"分享,原题"你不知道的 WebSocket",有修订和改动. 1.引言 本文将从基本概念.技术原理.常见易错常识.动手实践等多个方面入手,万 ...

  10. Fast Secure Computation of Set Intersection -解读

    本节解读paper:Fast Secure Computation of Set Intersection, 主要内容 在ROM上基于OMGDH问题设计了一个可以抵抗恶意攻击的PSI,主要贡献是对该协 ...