我有一个包含几百个文件夹的目录。每个文件夹都有一个 *.iso 文件和一个名为“Disc Art”的文件夹。Disc Art 文件夹内是一个 *.btw 文件,通常命名为 1.btw 或 01.btw。我希望能够将 .btw 的文件名更改为父文件夹中 *.iso 的文件名,并在其中添加“- Disc 01”。所以如果我有“Windflyers.iso”,我最终会得到“Windflyers - Disc 01.btw”
这是我到目前为止所尝试的。我相信我非常接近。出于某种原因,我觉得 SET 命令失败了,因为当我在下一行调用变量来重命名文件时,没有任何值。
for /D %%f in (*.*) do (
cd "%%f"
for /F %%a in ('dir /b *.iso') do set variable=%%~na
rename "Disc Art\*.btw" "%variable% - Disc 01.btw"
cd..
)
我也尝试过有人在我的工作中建议的方法。
setlocal enabledelayedexpansion
for /D %%f in (*.*) do (
cd "%%f"
for /F %%a in ('dir /b *.iso') do set variable=%%~na
rename "Disc Art\*.btw" "%variable% - Disc 01.btw"
cd..
) >> log.txt
endlocal
谢谢
我对下面的解决方案做了一些修改。dbenham 的解决方案有效,但如果 .iso 在文件名中包含空格,它只会给我第一个单词。我能够使用下面的 .bat 代码获得完整的文件名。
for /D %%f in (*.*) do (
cd "%%f"
for /F "tokens=*" %%* in ('dir /b *.iso') do rename "Disc Art\*.btw" "%%~n* - Disc 01.btw"
cd..
) >> log.txt