[Windows批處理]比對Git兩個分支之間的差異,把有改動的檔案複製到指定目錄

项希盛發表於2024-08-16

儲存為git-diff-copy.bat

@echo off
REM [Windows批處理]比對Git兩個分支之間的差異,把有改動的檔案複製到指定目錄
setlocal enabledelayedexpansion

REM 1:設定被複制的git專案資料夾(尾部要加"\")
set copy_from=..\vue-vben-admin\
REM 2:設定複製的目標資料夾
set copy_to=%~dp0
REM 設定要比對的兩個分支名稱
set git_from=v2
set git_to=v2-xixi

REM 讀取 diff.txt 中的檔案路徑並逐個複製到當前資料夾
for /f "delims=" %%i in ('git --git-dir %copy_from%.git diff --name-only %git_from% %git_to%') do (
	REM 獲取要複製的檔案路徑
	set "filepath=%%i"
	set "filepath=!filepath:/=\!"

	REM 資料夾自動建立
	for %%F in ("%copy_to%\!filepath!") do set "folderpath=%%~dpF"
	if not exist "!folderpath!" (
		mkdir "!folderpath!"
	)

	REM 複製檔案到當前資料夾
	echo copy To "%copy_to%!filepath!"
	copy "%copy_from%!filepath!" "%copy_to%!filepath!" 1>nul
)

echo All files copied.
pause

相關文章