【问题标题】:Mass renaming in batchfile: skip specific files by name批量重命名批处理文件:按名称跳过特定文件
【发布时间】:2015-04-13 14:30:17
【问题描述】:

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

forfiles -p "." -s -m . -c "cmd /c ren @file @file.mp3"

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

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

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

    forfiles 命令没有排除文件的参数。 /m 参数将包含基于扩展名的文件,因此如果您传递像 /m "*.zip" 这样的 ext 名称,它只会重命名 zip 文件,而不再重命名批处理文件。

    如果您真的想根据扩展名排除某些文件,您将不得不做一些更有趣的事情,可能包含多个批处理文件或 goto 语句。你不会使用 forfiles。您将运行一个命令来输出您想要的文件的名称,然后对这些文件中的每一个运行一个操作。像

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

    【讨论】:

      【解决方案2】:

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

      假设 JREN.BAT 在您的 PATH 中的某个位置,那么以下简单的一行代码可以直接从命令行运行 - 不需要批处理脚本(除了 JREN.BAT 实用程序本身)

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

      完整的文档内置在脚本中,可以通过jren /?jren /?|more 从命令行访问,如果您想一次只查看一页。

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 2019-06-08
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 2012-12-10
        • 2014-02-26
        • 2014-04-26
        • 1970-01-01
        相关资源
        最近更新 更多