将文件重命名为其所在目录的名称

时间:2012-12-18 12:56:25

标签: batch-file rename

我认为这是一项简单的任务,但我是批处理脚本的小块。

这是结构的样子:

MAINDIR
    directory name
        nameof.file

我希望批量重命名目录中与目录同名的所有文件。

基本上是:

扫描子文件夹并找到所有*.file

*.file重命名为

中已有的目录名称

最终结果是nameof.filedirectory name.file

更具体地说,我有350个文件需要重命名。它们都在适当的目录中,我希望每个文件夹中的1个文件都有文件夹的名称作为文件名。

c:\folder 1\file1.ext
c:\folder 2\file2.ext
c:\folder 3\file3.ext

所有.ext个文件都需要将其文件夹名称作为文件名。

c:\folder 1\folder 1.ext
c:\folder 2\folder 2.ext
c:\folder 3\folder 3.ext

我希望这更清楚。因此,一旦编写了脚本,我就可以将所有350个文件一个接一个地拖放到脚本中,然后将文件重命名。

1 个答案:

答案 0 :(得分:0)

这会将拖动到其上的任何文件重命名为其父目录名。

setlocal enabledelayedexpansion
for %%a in (%1) do (
set p=%%~dpa
set p=!p:~0,-1!
for %%b in ("!p!") do ren %%a "%%~nb.*"
)

要以递归方式执行固定根目录下所有子文件夹中的所有文件,您可以使用此

setlocal enabledelayedexpansion
for /r C:\folder %%a in (*) do (
set p=%%~dpa
set p=!p:~0,-1!
for %%b in ("!p!") do ren "%%a" "%%~nb.*"
)

这将节省您必须单独拖放它们。除非你一次只能做一个,否则第一个解决方案就足够了。