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



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

afilename_1
bfilename_3
cfilename_2

这就是它的样子。但我需要它来根据下划线后面的数字进行排序。我想要下划线之前的单词,以及它们,描述文件描述。

提示:交换用"_"分隔的单词/数字。

预期输出:

1_afilename
2_cfilename
3_bfilename

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

p。S.文件夹由100个文件组成
Java编程语言中的解决方案是可观的,但不是强制性的。

Update(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') }

在Windows Powershell 中

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

更新以保持扩展

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

我可以想出两种方法。

这是一个用C/C++/C#或Python或其他语言编写的相当简单的程序。根据您的专业知识,编写和调试程序的时间可能与手工完成工作的时间一样长,但要有趣得多。

一个好的程序员文本编辑器可以从目录列表中获取一个文件列表,并在中生成一个带有重命名命令的.bat文件。宏和正则表达式搜索和替换等功能使这项工作相当轻松。(我一直推荐jEdit——免费、多平台、功能强大。)

最新更新