梦中情萱 2023-02-17 15:57 采纳率: 60.5%
浏览 124
已结题

批处理如何批量截短文件名?

我的某个目录里下(当前目录)有很多文件,有些文件名太长了
由于没学过batch ,来当伸手党了,顺便学习,谢谢!

求一个脚本,在当前目录执行,将目录下所有文件名长度超过10的,取前20位重命名。

  • 写回答

12条回答 默认 最新

  • GISer Liu 2023-02-17 16:05
    关注

    可以使用批处理脚本(.bat)来批量截短文件名,具体操作如下:

    1. 打开记事本或其他文本编辑器,新建一个批处理脚本(例如:truncate_filenames.bat)。

    2. 在批处理脚本中添加以下命令:

    @echo off
    setlocal enabledelayedexpansion
    
    for %%f in (*) do (
      set "filename=%%~nf"
      set "extension=%%~xf"
      if "!filename!" neq "!filename:~0,10!" (
        set "newname=!filename:~0,20!!extension!"
        ren "%%f" "!newname!"
      )
    )
    

    3.保存批处理脚本,并将其放置到需要批量截短文件名的目录下。

    4.双击运行批处理脚本,它将在当前目录下批量截短文件名。脚本会将当前目录下所有文件名长度超过10的文件名截短为前20位,并将原始文件名重命名为新文件名。

    需要注意的是,该脚本仅适用于当前目录下的文件,如果您需要批量截短子目录下的文件名,可以在脚本中添加递归遍历子目录的命令。例如:

    @echo off
    setlocal enabledelayedexpansion
    
    for /r %%f in (*) do (
      set "filename=%%~nf"
      set "extension=%%~xf"
      if "!filename!" neq "!filename:~0,10!" (
        set "newname=!filename:~0,20!!extension!"
        ren "%%f" "!newname!"
      )
    )
    
    

    这样,脚本将递归遍历当前目录下的所有子目录,并将文件名长度超过10的文件名截短为前20位。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 2月17日