重命名文件夹中的所有文件(交换由'_'分隔的单词/数字)

时间:2017-01-09 15:30:34

标签: java windows file rename

我在“Windows 10”操作系统中有一个文件夹,文件名为;

afilename_1
bfilename_3
cfilename_2

这是它的出现方式。但我需要它根据下划线后面附加的数字进行排序。我想要下划线之前的单词以及它们描述文件描述。

提示:交换以“_”分隔的字词/数字。

预期输出:

1_afilename
2_cfilename
3_bfilename

除手动重命名外还有什么想法吗?

P.S。该文件夹由100个文件组成 Java编程语言的解决方案很明显,但不是强制性的。

更新(10.01.2017):这是一个示例Java代码,用于获取所有文件名作为输出。

File folder = new File("/xxx/ss/folder/"); 
File[] listOfFiles = folder.listFiles(); 
for (File file : listOfFiles) 
{ if (file.isFile()) 
{ System.out.println(file.getName()); 
} }  

现在,考虑如何一次获取每个文件名并在循环中完成交换 有什么想法吗?

解决方案:Windows Powershell代码有效。

如果输入:文件名如下

xxx_afilename_1
xxx_bfilename_3
xxx_cfilename_2

然后以下代码有助于获得如上所述的类似输出。

ls | %{ ren $_ ($_.name -replace '.*?-(.*?)-(.*?)(\..*)','$2_$1$3') }

2 个答案:

答案 0 :(得分:1)

我有两种方法可以想到。

用C / C ++ / C#或Python或者你有什么东西来编写这是一个相当简单的程序。根据您的专业知识,编写和调试程序可能需要花费很长时间,以便手工完成工作,但更有趣。

优秀的程序员文本编辑器可以从目录列表中获取文件列表,并使用重命名命令生成.bat文件。诸如宏和正则表达式搜索和替换之类的东西使得工作相当轻松。 (我总是推荐jEdit - 免费,多平台和强大的。)

答案 1 :(得分:1)

在Windows Powershell中

ls | %{ ren $_ ($_.name -replace '(.+)_(.+)','$2_$1') }

保持扩展名的更新

ls | %{ ren $_ ($_.name -replace '(.+)_(.+)(\..+)','$2_$1$3') }