@echo off
setlocal enabledelayedexpansion
:: vue 的 node_modules 太大
:: maven 打包后的 target 文件也很大,
:: 有些項目日志文件也很大,導致磁盤空間不足了,
:: 所以寫了個腳本,只要配置一下各項目目錄,
:: 雙擊這個腳本就可自動清空這些文件,
:: 清空某個目錄時,需要輸入Y進行確認
:: 注意:目錄可以是中文的,但不能包含空格(如不支持C:\Program Files)
:: 配置區 start =================================================
:: 需要清理的各項目目錄(以空格分隔)
:: set "projectRoots=D:\Work\jorchi\didi-driving\didi-driving-server D:\Work\jorchi\alichat\ali-chat-client-vue-prod D:\Work\jorchi\didi-driving\didi-driving-server-test D:\Work\jorchi\didi-driving\didi-driving-server-prod D:\Work\jorchi\car-data-business\car-data-business-server D:\Work\jorchi\alichat\ali-chat-server-dev D:\Work\jorchi\alichat\ali-chat-server-prod D:\Work\jorchi\alichat\ali-chat-server-sync D:\Work\jorchi\alichat\ali-chat-server-sync-prod D:\Work\jorchi\alichat\ali-chat-server-test D:\Work\jorchi\alichat\ali-chat-server-uat"
set "projectRoots="
:: 需要直接清理的各臨時文件目錄(以空格分隔)
:: set "tmpDirs=D:\臨時目錄 D:\log D:\TestDir D:\usr\local D:\data D:\imgdata D:\Work\jorchi\alichat\ali-chat-client-vue-prod\ROOT D:\root\TongWeb7.0\logs"
set "tmpDirs=D:\臨時目錄 D:\log"
:: 配置區 end ====================================================
:: 清理項目日志目錄
for %%r in (%projectRoots%) do (
? ? cd /d "%%r"
? ? echo [清空] mvn clean at %%r
? ? call mvn clean
? ? set "_root=%%~r"
? ? :: 清空項目根目錄下日志文件
? ? set "_logDir=!_root!\logs"
? ? call :clean_dir "!_logDir!" "項目日志"
? ? :: 清空某模塊下的日志文件
? ? set "_logDir=!_root!\server-api\logs"
? ? call :clean_dir "!_logDir!" "項目日志"
? ? :: 清空 node_modules 文件
? ? set "_logDir=!_root!\node_modules"
? ? call :clean_dir "!_logDir!" "項目依賴"
)
:: 清理臨時文件目錄
for %%d in (%tmpDirs%) do (
? ? call :clean_dir "%%~d" "臨時文件"
)
endlocal
echo [已執行完畢]
pause
exit /b 0
:: 通用清理函數 -----------------------------
:clean_dir
set "target=%~1"
set "type=%~2"
if not exist "!target!\" (
? ? :: echo [跳過][!type!] 目錄不存在: %~1
? ? exit /b 0
)
:: 用戶確認環節
:confirm
set /p "choice=確認要清空目錄 [%~1] 嗎?(Y/N): "
if /i "!choice!" == "Y" (
? ? echo 正在清理: %~1 ...
? ? del /q /s /f "!target!\*" >nul 2>&1
? ? rmdir /s /q "!target!" >nul 2>&1
? ? if exist "!target!\" (
? ? ? ? echo [失敗] 清理未完成: %~1
? ? ) else (
? ? ? ? echo [成功] 已清理: %~1
? ? )
) else if /i "!choice!" == "N" (
? ? echo [取消] 已跳過: %~1
) else (
? ? echo 輸入無效,請按 Y 或 N
? ? goto confirm
)
exit /b 0