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

2021-06-21 15:30:41 +08:00
 inori
一个 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 脚本等其他方式间接实现。
查了很久没找到,特来求助
1030 次点击
所在节点    问与答
7 条回复
tsungkang
2021-06-21 15:39:56 +08:00
forfiles /M *.xlsx /S /C "cmd /c rename @file \"@fname_template\""
thunderw
2021-06-21 15:51:30 +08:00
你环境有 Excel 吗?这种情况我一般不会费劲折腾 cmd 。直接文件名贴 excel 里,然后写个 ren 的公式一拉。然后往 cmd 里一贴完事。
inori
2021-06-21 15:58:31 +08:00
@tsungkang 这个可行 多谢多谢~~
Tumblr
2021-06-21 16:04:31 +08:00
为啥就没考虑过用 PowerShell 呢 😅
@tsungkang #1 赞👍貌似熟悉 forfiles 这个命令的人不是那么常见……
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
2021-06-21 16:11:29 +08:00
total commander ctrl+M ; 文件名编辑可以使用任何 editor 。
xingyuc
2021-06-22 16:29:11 +08:00
powertoys 有这个功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX