Windows 批处理 - 重命名扩展名之前带有句点的文件



我在Windows 10上,我正在编写一个批处理文件,将许多图像从一种格式转换为另一种格式,并重命名一个帮助程序文件,该文件生成有关每个图像的更多信息。下面是一个示例:

test.tif
test.tif.thing

如果要转换为 png 之类的格式,我想重命名 test.tif.thing测试.png.thing。这是我现有的脚本,由于我尝试了许多选项,它根本不起作用,但它应该有望突出问题:

for %%q in (*.tif.thing) do (
    ren "%%q" "%%~pq%%~nq"
)
timeout 100

我遇到的主要问题是在重命名文件时删除".tif",因为".thing"在技术上是实际扩展名,因此文件名是没有扩展名的"thing.tif"。我研究了使用变量从字符串中删除字符,但我从未设法让它们工作,如果可能的话,我想知道一个更干净的解决方案,以便在将来文件名更改时使这种规模更好。我该怎么做?

使用第二级FOR从文件名中删除内部扩展名

for %%A in (*.tif.thing) do (
    REM %%A is filename.tif.thing
    REM %%~nA is filename.tif
    for %%B in ("%%~nA") do (
        REM %%~nB is filename
        ECHO ren "%%~A" "%%~nB.png.thing"
    )
)

ren命令被撤防,以防止在测试脚本时实际重命名文件。删除ECHO以启用重命名。

最新更新