Windows批处理脚本实现批量复制文件并重命名

Posted 雁回晴空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows批处理脚本实现批量复制文件并重命名相关的知识,希望对你有一定的参考价值。

       有的时候,我们需要对存储位置具有一定规律的大量相似文件进行复制移动和重命名。例如,我最近使用labelme工具标注了一批图片数据,但是每个图片自己生成了一个文件夹。然而在使用的时候,要求所有的图片放在同一个文件夹,并且名字按照数字编号。这时候如果是自己手动操作,无疑会费时费力。使用批处理技术可以简单解决这个问题。本文使用的是Windows的批处理技术。

       下面通过一个例子来说明。我们有这样一堆文件夹如下:

       

       每个文件夹中都有这样几个使用其他工具生成的文件:

       

       我们需要把每个文件夹中的img.png 和label.png 分别复制到imgs和masks文件夹中,并且重命名包含数字信息。

       于是我们在这一推文件夹所在的同一个目录下,新建“imgs”和“masks”这两个文件夹,并新建一个名为“test.bat”的批处理脚本,脚本中的内容如下:

SETLOCAL ENABLEDELAYEDEXPANSION
SET /a x=0
FOR /r %%i IN (.) DO (
IF EXIST %%i\\img.png (
    IF EXIST %%i\\label.png ( 
        SET /a x+=1
        XCOPY %%i\\img.png imgs /y  
        REN "imgs\\img.png" "img_!x!.png"
        XCOPY %%i\\label.png masks /y 
        REN "masks\\label.png" "mask_!x!.png"
        )
    )
)
ENDLOCAL
PAUSE

       保存后,双击运行即可。上面的运行逻辑是这样的,首先找到当前路径的所有文件夹(包含当前文件夹和子文件夹),判断指定的文件是否存在,然后找到文件夹中的img.png和label.png,将它们分别使用xcopy命令拷贝到指定的imgs和maks文件夹,拷贝过去后再使用ren命令进行重命名。注意:命令行中命令、命令选项以及命令参数是不区分大小写的。

以上是关于Windows批处理脚本实现批量复制文件并重命名的主要内容,如果未能解决你的问题,请参考以下文章

怎么用bat复制指定的一个文件到指定文件夹,并重命名?

将自己文件夹中的松散文件批量复制到新的重命名文件夹

Windows批处理文件查找单词并重命名文件

批处理:批量重命名父文件夹下所有子文件夹里的文件

bat批处理:根据文本文件批量重命名文件

用shell命令对文件重命名