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命令进行重命名。注意:命令行中命令、命令选项以及命令参数是不区分大小写的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章