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命令進行重命名。注意:命令行中命令、命令選項以及命令參數是不區分大小寫的。

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