批处理文件中的批量重命名:按名称跳过特定文件

时间:2015-04-13 14:30:18

标签: windows batch-file cmd

我想要一个用于重命名文件的批处理脚本。它应该从目录工作并检查子文件夹中的所有文件并重命名文件。

forfiles -p“。” -s -m -c“cmd / c ren @file @ file.mp3”

但是使用.bat多次使其变得复杂。我得到.mp3.mp3文件并将我的.bat重命名为.bat.mp3(关闭诅咒...)。 对于我.mp3和.bat,如何跳过特定文件结尾的文件? 我相信有一个优雅的解决方案。

2 个答案:

答案 0 :(得分:0)

要停止批处理文件重命名,可以将其从要重命名的文件位置“放在一个目录”中。运行forfiles命令时,将/ p参数作为“./name_of_folder”传递,并将/ s用于子文件夹。

forfiles命令没有用于排除文件的参数。 / m参数将包含基于扩展名的文件,因此,如果您传递了诸如/ m“* .zip”之类的分机名称,它将只重命名zip文件,它将不再重命名您的批处理文件。

如果你真的想要根据扩展名排除某些文件,你必须做一些可能包含多个批处理文件或goto语句的小东西。你不会使用forfiles。您将运行一个命令来输出您想要的文件名,然后对每个文件运行一个操作。

之类的东西
for /f %%a in ('dir /b *') do @if "%%~xa" neq ".mp3" echo %%a

答案 1 :(得分:0)

使用JREN.BAT非常简单 - 一种混合JScript /批处理实用程序,可以通过正则表达式批量重命名文件。 JREN.BAT是纯脚本,可​​以在XP以后的任何Windows机器上本机运行。

假设JREN.BAT位于PATH中的某个位置,则以下简单的单行程序直接从命令行工作 - 不需要批处理脚本(JREN.BAT实用程序本身除外)

jren $ .mp3 /s /fx "*.mp3|*.bat"

完整文档内置于脚本中,如果您希望一次只能看到一个页面,可以通过jren /?jren /?|more从命令行访问。