0

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

这是结构的样子:

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 个文件一个一个地拖放到脚本上,它会获取文件并重命名它。

4

1 回答 1

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.*"
)

这将使您不必单独拖放它们。除非你一次只能做一个,在这种情况下,第一个解决方案就足够了。

于 2012-12-18T14:18:09.803 回答