使用FOR循环的同一文件夹中的另一个文件名重命名文件名

时间:2017-08-18 11:26:13

标签: windows batch-file

如果在Rename filename using another files name from the same folder

找到非常有用的批处理脚本

有效:

    @echo off
setlocal enabledelayedexpansion

:: This assumes there is only one avi file in the folder
for /F %%A in ('dir /b *.jpg') do (
    set basename=%%~nA
    ren *.avi !basename!.avi
)

但是我如何添加一个额外的FOR循环来为每个子文件夹执行此操作。我有许多子文件夹需要重命名。另一个问题是,在重命名后,只采用文件名的第一个名称。在文件名中的空格之后,脚本会剪切文件名。

结构如下:

文件夹 ------------子文件夹 --------------------- file.jpg --------------------- notagoodfilename.avi

好的Batchscript之后:

文件夹 ------------子文件夹 --------------------- file.jpg --------------------- file.avi

此脚本应适用于每个子文件夹。文件夹 - >子文件夹,子文件夹1 ...

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您之前的脚本可以简化为以下单行:

for %%a in (*.jpg) do ren *.avi %%~na.*

要在当前文件夹的所有子文件夹中执行此操作:

for /r %%a in (*.jpg) do ren %%~dpa*.avi %%~na.*

更新: 根据对此答案的评论,这是一个更好的版本:

for /r "C:\Path\To\Top\Folder" %%a in (*.jpg) do ren "%%~dpa*.avi" "%%~na.*"