V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
inori
V2EX  ›  问与答

请问 windows cmd 命令行如何进行文件批量重命名?

  •  
  •   inori · 2021-06-21 15:30:41 +08:00 · 971 次点击
    这是一个创建于 1230 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个 test/文件夹内有多个子文件夹,每个子文件夹内有 xlsx 文件,如何递归的把所有的文件重命名添加 _template 后缀呢?
    也就是把 aaa.xlsx,bbb.xlsx.....重命名成 aaa_template.xlsx, bbb_template.xlsx......
    我这边使用的命令是:
    for /r %f in (*.xlsx) do ren "%f" *_template
    但是这样只能把 aaa.xlsx 重命名成 aaa.xlsx_template,也就是无法去除后缀,应该怎么获取不带后缀的文件名?
    环境限制只能使用 cmd 命令行进行修改,无法使用 python 脚本等其他方式间接实现。
    查了很久没找到,特来求助
    7 条回复    2021-06-22 16:29:11 +08:00
    tsungkang
        1
    tsungkang  
       2021-06-21 15:39:56 +08:00   ❤️ 1
    forfiles /M *.xlsx /S /C "cmd /c rename @file \"@fname_template\""
    thunderw
        2
    thunderw  
       2021-06-21 15:51:30 +08:00
    你环境有 Excel 吗?这种情况我一般不会费劲折腾 cmd 。直接文件名贴 excel 里,然后写个 ren 的公式一拉。然后往 cmd 里一贴完事。
    inori
        3
    inori  
    OP
       2021-06-21 15:58:31 +08:00
    @tsungkang 这个可行 多谢多谢~~
    Tumblr
        4
    Tumblr  
       2021-06-21 16:04:31 +08:00
    为啥就没考虑过用 PowerShell 呢 😅
    @tsungkang #1 赞👍貌似熟悉 forfiles 这个命令的人不是那么常见……
    kokutou
        5
    kokutou  
       2021-06-21 16:05:37 +08:00
    另外,FOR 变量参照的替换已被增强。你现在可以使用下列
    选项语法:

    %~I - 删除任何引号("),扩展 %I
    %~fI - 将 %I 扩展到一个完全合格的路径名
    %~dI - 仅将 %I 扩展到一个驱动器号
    %~pI - 仅将 %I 扩展到一个路径
    %~nI - 仅将 %I 扩展到一个文件名
    %~xI - 仅将 %I 扩展到一个文件扩展名
    %~sI - 扩展的路径只含有短名
    %~aI - 将 %I 扩展到文件的文件属性
    %~tI - 将 %I 扩展到文件的日期 /时间
    %~zI - 将 %I 扩展到文件的大小
    %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
    到找到的第一个完全合格的名称。如果环境变量名
    未被定义,或者没有找到文件,此组合键会扩展到
    空字符串

    可以组合修饰符来得到多重结果:

    %~dpI - 仅将 %I 扩展到一个驱动器号和路径
    %~nxI - 仅将 %I 扩展到一个文件名和扩展名
    %~fsI - 仅将 %I 扩展到一个带有短名的完整路径名
    %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
    到找到的第一个驱动器号和路径。
    %~ftzaI - 将 %I 扩展到类似输出线路的 DIR

    在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
    用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
    比较易读,而且避免与不分大小写的组合键混淆。
    matrix67
        6
    matrix67  
       2021-06-21 16:11:29 +08:00
    total commander ctrl+M ; 文件名编辑可以使用任何 editor 。
    xingyuc
        7
    xingyuc  
       2021-06-22 16:29:11 +08:00
    powertoys 有这个功能
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2637 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:17 · PVG 20:17 · LAX 05:17 · JFK 08:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.