使用通配符在cmd中重命名文件

20

我正在编写一个用于重命名文件的BAT文件。

我的文件是*.jpg,其中*是文件名,我想把它们改为*-thumb.jpg

尝试执行RENAME *.jpg *-thumb.jpg时,我的文件会出现为*.jpg-thumb.jpg

2个回答

34

实际上,只要名称中只有一个 .,RENAME 命令就可以解决问题。只需使用多个 ? 替代单个 *

REN *.jpg ????????????????????-thumb.*

只需确保?的数量至少与将要重命名的最长文件名一样长即可。

您还可以通过在源掩码中使用多个?来确保不会意外地命名具有多个.的名称。以下操作将将"abc.jpg"重命名为"abc-thumb.jpg",但不会对"abc.xyz.jpg"进行任何更改。

REN ????????????????????.jpg ????????????????????-thumb.*

您可以使用以下方法将文件重命名为带有两个点的名称,例如 "abc.xyz.jpg"。

REN ????????????.????????????.jpg ????????????.????????????-thumb.*

这个模式可以扩展到名称中的任意数量的点。

有关更多信息,请参见Windows重命名命令如何解释通配符?


16

类似这样:

for %%f in (*.jpg) do rename "%%f" "%%~nf-thumb.jpg"

1
更多信息请参见:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx?mfr=true - Peter Svensson
@PeterLiljenberg 更新了您的答案 - 重命名命令中缺少原始文件名。此外,添加了“”以处理带空格的文件名,并将“%”加倍,以使命令在批处理文件中正常运行。 - shf301
@shf301 感谢你们两位的回答和更新! - kru96
1
如果您想直接在DOS提示符中执行此操作,则需要使用一个(1)%。 - Håkon K. Olafsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接