批處理指令碼:遞迴移動資料夾內所有檔案

ren_miruu發表於2024-11-26

使用及其說明

  1. 複製程式碼到空白文字檔案,修改字尾名為bat。
  2. 雙擊執行,輸入資料夾位置後回車。

說明

  • 不支援命令列引數,相信會用引數呼叫的大佬有能力自己修改程式碼
  • 需確保源目錄和目標目錄都有讀寫許可權
  • Windows作業系統
  • 程式碼經過測試

程式碼

@echo off
chcp 65001 & cls
setlocal enabledelayedexpansion

title 檔案移動 v1.0 Author: YuAn
:: 設定源目錄和目標目錄
set /p source_folder=源目錄: 
set /p target_folder=目標位置: 

:: 檢查源目錄是否存在,如果不存在則退出
if not exist "%source_folder%" (
    echo ERROR: 位置 "%source_folder%" 不存在
    pause >nul & exit
)

:: 檢查目標目錄是否存在,如果不存在則建立
if not exist "%target_folder%" (
    echo WARNING: 位置 "%target_folder%" 不存在,正在建立… 
    mkdir "%target_folder%"
)

:: 遍歷源目錄及其子目錄中的所有檔案
set f_count=0
set m_count=0
for /r "%source_folder%" %%f in (*) do (
    set "file=%%f"
    set "filename=%%~nxf"
    set "target_file=%target_folder%\!filename!"

    :: 移動檔案
    move "!file!" "!target_file!" >nul
    if errorlevel 1 (
        echo INFO: 移動失敗:!file!
        set /a m_count+=1
    ) else (
        echo INFO: 移動檔案:!file!
        set /a f_count+=1
    )
)

echo %f_count% 個檔案移動成功,%m_count% 個檔案移動失敗 
echo 按下任意按鍵退出 
pause >nul & exit

程式碼描述

此指令碼用於將指定資料夾及其子資料夾中的所有檔案移動到另一個資料夾,將會不可逆地破壞目錄樹結構,對於提取多層巢狀的複雜資料夾結構中的大量檔案非常有用。

相關文章