主题:[讨论]使用JAVA和脚本实现批处理文件夹中文件的前缀
对于需要批处理一个图片的文件夹中的图片,一般会有两个主要的需求:
批处理图片的尺寸
批处理图片的文件名,包括增加、删除前缀,更改文件类型……
首先,对于批量更改图片尺寸,有个简便的方法:利用可牛批处理工具,直接设置更改后的图片尺寸,点击处理,即可生成。
但是处理后的文件都会有conew_的前缀,对于下一步的处理很不方便。
所以,下面主要研究批量删除前缀的问题。
脚本语言
.bat文件和.cmd文件可以很简便的实现批处理命令,几行代码就可以很快速解决需要解决的问题,代码如下:
@echo off& setlocal enabledelayedexpansion
rem 过滤出*.jpg文件
for /f "delims=" %%i in ('dir /b "*.jpg" ') do (
set a=%%i
rem a:后的是要去掉的前缀
set b=!a:conew_=!
rem 将文件重新命名
ren !a! !b!.jpg
)
for /f %%i in ('dir /b "*.jpg" ') do ren %%i %%~ni
pause
使用方法:将此文件保存成.cmd文件,放在所需要处理的文件夹中,双击运行即可。
Java语言
这个版本本来的作用是加前缀,后来根据所要处理图片的特点,进行了相应的改变,跟脚本语言的处理方法大有不同,但是同样实现了所要达到的目标。代码如下:、
import java.io.File;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("\n警告:此程序会将指定文件夹下的其它类型文件一起重命名,\n\n" +
"使用前请将不需要重命名的文件转移到其他文件夹下,以免造成不必要的麻烦!");
System.out.println("\n输入文件夹路径(如F盘下的test文件夹可写为:F:/test):");
String s=input.next();
String sheng = null;
File path=new File(s);
if(path.isDirectory()){
System.out.println("\n命名前缀(如:girl,命名后为:girl[1]等):");
String pre=input.next();
File[] files=path.listFiles();
//11是pos_img中同一个人的表情图片个数
for (int i = 0; i < files.length; i++) {
int cnt = i/11+1;
for(int j=1;j<=11;j++)
{
String m=null;
File file=files[i];
if(file.isFile()){
String realName=file.getName();
String Postfix=realName.substring(realName.indexOf('.'));
// System.out.println(Postfix);
pre="";
// System.out.println("pre:"+pre);
if(j<10){
m="0"+ Integer.toString(j) ;
}else{
m=Integer.toString(j);
}
//
String l = Integer.toString(cnt);
//
File dest=new File(s+"/"+l+"_"+m+Postfix);
file.renameTo(dest);
}
}
//
}
System.out.println("\n重命名完成!");
}else{
System.out.println("\n您输入的不是目录!");
}
}
}
使用方法:运行以后,在控制台中输入文件夹的位置,以及前缀,运行结束便会自动生成。来源于:办公软件oa http://www.qzxoa.com/
批处理图片的尺寸
批处理图片的文件名,包括增加、删除前缀,更改文件类型……
首先,对于批量更改图片尺寸,有个简便的方法:利用可牛批处理工具,直接设置更改后的图片尺寸,点击处理,即可生成。
但是处理后的文件都会有conew_的前缀,对于下一步的处理很不方便。
所以,下面主要研究批量删除前缀的问题。
脚本语言
.bat文件和.cmd文件可以很简便的实现批处理命令,几行代码就可以很快速解决需要解决的问题,代码如下:
@echo off& setlocal enabledelayedexpansion
rem 过滤出*.jpg文件
for /f "delims=" %%i in ('dir /b "*.jpg" ') do (
set a=%%i
rem a:后的是要去掉的前缀
set b=!a:conew_=!
rem 将文件重新命名
ren !a! !b!.jpg
)
for /f %%i in ('dir /b "*.jpg" ') do ren %%i %%~ni
pause
使用方法:将此文件保存成.cmd文件,放在所需要处理的文件夹中,双击运行即可。
Java语言
这个版本本来的作用是加前缀,后来根据所要处理图片的特点,进行了相应的改变,跟脚本语言的处理方法大有不同,但是同样实现了所要达到的目标。代码如下:、
import java.io.File;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("\n警告:此程序会将指定文件夹下的其它类型文件一起重命名,\n\n" +
"使用前请将不需要重命名的文件转移到其他文件夹下,以免造成不必要的麻烦!");
System.out.println("\n输入文件夹路径(如F盘下的test文件夹可写为:F:/test):");
String s=input.next();
String sheng = null;
File path=new File(s);
if(path.isDirectory()){
System.out.println("\n命名前缀(如:girl,命名后为:girl[1]等):");
String pre=input.next();
File[] files=path.listFiles();
//11是pos_img中同一个人的表情图片个数
for (int i = 0; i < files.length; i++) {
int cnt = i/11+1;
for(int j=1;j<=11;j++)
{
String m=null;
File file=files[i];
if(file.isFile()){
String realName=file.getName();
String Postfix=realName.substring(realName.indexOf('.'));
// System.out.println(Postfix);
pre="";
// System.out.println("pre:"+pre);
if(j<10){
m="0"+ Integer.toString(j) ;
}else{
m=Integer.toString(j);
}
//
String l = Integer.toString(cnt);
//
File dest=new File(s+"/"+l+"_"+m+Postfix);
file.renameTo(dest);
}
}
//
}
System.out.println("\n重命名完成!");
}else{
System.out.println("\n您输入的不是目录!");
}
}
}
使用方法:运行以后,在控制台中输入文件夹的位置,以及前缀,运行结束便会自动生成。来源于:办公软件oa http://www.qzxoa.com/