如何批量重命名两个扩展名的文件?

How to batch rename files with two extensions?

我有一个文件转换工具,可以正确转换文件,但只是将所需的文件类型扩展名附加到旧文件名。 所以示例文件就像 文件 1.ext1.ext2 . . . fileN.ext1.ext2

我认为这很容易修复 - 只需在 ren 命令上使用通配符即可。 例子: ren \dir*.ext1.ext2 *.ext2

但输出仍然是 .ext1.ext2。我觉得我很接近。

有什么建议吗?我看到了使用 push 和 pop 的建议,但这些似乎没有必要。

谢谢!

* 通配符具有相当多的与 DOS 8.3 名称相关的兼容性处理等等。 How did copying and renaming with wildcards work in MS-DOS?

一种解决方法是在重命名操作中使用不带通配符的全名:

@echo off

REM test file:
echo.>> "file1.foo.bar"

REM remove foo extension:
for %%A in (*.foo.bar) do for /F "eol=? delims=" %%B in ("%%~dpnA") do @ren "%%~fA" "%%~nB%%~xA"

(如果不在批处理文件中,请将 %% 更改为 %)