如何将文件名更改为它们所在目录的名称?

How to change file names to name of directory that they're in?

我有一个名为 "Projects" 的文件夹。在那个文件夹中,我有多个文件夹用于我的音乐项目,它们具有不同的名称,并且在每个文件夹中我都有一个 FL Studio 项目文件 (.flp),以及项目数据,如 Wave 和 MP3 文件。但是所有 FLP 文件都具有默认名称 ("untitled.flp")。有没有办法将文件名更改为它们所在目录的名称?

我以为我可以制作一个批处理或 VBS 文件,但我不确定我应该如何编程它。

伪批号:

:loop
for each "untitled.flp" in "D:\Google Drive\Projects" goto change
exit
:change
set variable="untitled.flp directory"
ren "untitled.flp" %variable%
goto loop

我是 运行 Windows 10.

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /r "%sourcedir%" %%a IN (untitled.flp) DO IF EXIST "%%a" (
 FOR %%s IN ("%%~dpa.") DO ECHO REN "%%a" "%%~nxs.flp"
)

GOTO :EOF

您需要更改 sourcedir 的设置以适合您的情况。

所需的 REN 命令仅 ECHOed 用于测试目的。 确认命令正确后,将ECHO REN更改为REN以实际重命名文件。

第一个 for 将整个树中的目录名分配给 %%a 并附加文件名。 if 排除文件不存在的目录名,内部 if 构造 %%a 的完整路径名并附加 .,将整个结果名称视为文件名;然后 ren 命令将找到的文件的完整文件名重命名为文件父目录名的名称和扩展名部分。