我已经读过Windows RENAME 命令如何解释通配符正如我所理解的,但仍然无法决定是否可以使用某些通配符组合来使 RENAME 执行此操作:
Old file names: abc001.txt, abc002.txt, abc003.txt, ... etc
New file names: demo_001.txt, demo_002.txt, demo_003.txt, ... etc
or: x001.txt, x002.txt, x003.txt, ... etc
or: file01.txt, file02.txt, file03.txt, ... etc
我所知道的是,会将所有前缀rename abc*.txt xyz*.txt
更改为,但仅仅是因为和的长度相同。是否有一个简单的重命名命令可以处理较短或较长的前缀……或者您必须使用批处理来执行此类重命名?abc
xyz
abc
xyz
答案1
答案是不行,您无法仅使用带通配符的 RENAME 命令随意更改文件名前缀的长度。这将需要一些更复杂的脚本,或者使用非标准的第三方工具。
如果您仔细阅读规则,您会发现源掩码中的通配符对重命名结果没有影响 - 它们仅过滤要重命名的文件。目标掩码中的非通配符前缀字符将与原始名称中的字符一一替换。
答案2
在 PowerShell 中,对于第一个示例,您可以使用:
Dir C:\folder | ren –NewName {$_.name -replace "abc","demo_"}
-whatif
如果要在执行命令之前测试该命令,请添加最后一个参数
答案3
以下是使用的方法JP Software 的 TCC/LE,命令解释器,其REN
命令支持正则表达式:
ren ::abc(\d+.txt) ::demo_\1
如果没有正则表达式,它仍然是一行代码。只需使用@INSTR[]
变量函数和FOR
命令:
for i in (abc*.txt) do ren %i demo_%@instr[3,,%i]