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

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

我的某个目录里下(当前目录)有很多文件,有些文件名太长了
由于没学过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日

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用