请问 windows cmd 命令行如何进行文件批量重命名? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
inori
V2EX    问与答

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

  •  
  •   inori 2021-06-21 15:30:41 +08:00 1435 次点击
    这是一个创建于 1584 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个 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     Solana     3022 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 12:49 PVG 20:49 LAX 05:49 JFK 08:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86