我认为这是一项简单的任务,但我是批处理脚本的小块。
这是结构的样子:
MAINDIR
directory name
nameof.file
我希望批量重命名目录中与目录同名的所有文件。
基本上是:
扫描子文件夹并找到所有*.file
。
将*.file
重命名为
最终结果是nameof.file
为directory 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个文件一个接一个地拖放到脚本中,然后将文件重命名。
答案 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.*"
)
这将节省您必须单独拖放它们。除非你一次只能做一个,否则第一个解决方案就足够了。