這是一個備份LINE電腦版對話紀錄的批次檔腳本,使用的前提是先安裝開源、免費的7-Zip壓縮軟體
# 腳本功能:
- 自動關閉LINE電腦版,進行備份對話紀錄到我的文件
- 智能檔案壓縮:使用7-Zip進行高效壓縮
- 自動清理:保留最近7天的備份,自動刪除舊檔案
- 管理員權限檢測:自動提升為管理員權限執行
- 彩色輸出:支援Windows 10/8.1的ANSI顏色顯示
- 完成音效:執行完成後播放小星星旋律
# 相容性:
- Windows 10+:
完整功能支援
- Windows 8:大部分相容,需禁用 ANSI 顏色
- Windows 7:部分相容,需禁用 ANSI 顏色、檢查 PowerShell 版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 |
@echo off REM 【設置基本環境與參數】 setlocal EnableDelayedExpansion REM -------------------------------------------------- REM 【設置所有變數】,其他7-Zip指令可以到下方SEVEN_ZIP_PATH處修改 REM 目前使用的參數是【a -t7z -aoa -ssw -y】 REM -t7z // 指定壓縮格式為 .7z(比 .zip 更高效的壓縮格式)。 REM -aoa // 如果目標檔案已存在,則強制覆蓋(避免提示視窗)。 REM -ssw // 即使檔案正在被其他程式使用,仍嘗試壓縮。 REM -y //自動確認所有詢問,避免用戶手動輸入 Y/N。 REM -------------------------------------------------- set "BACKUP_DIR=%USERPROFILE%\Documents" set "COMPRESSION_LEVEL=-mx9" set "EXE_NAME=LINE.exe LineMediaPlayer.exe" set "SEVEN_ZIP_PATH=%ProgramFiles%\7-Zip\7z.exe" set "SOFTWARE_NAME=LINE" set "SRC_FOLDER1=%USERPROFILE%\AppData\Local\LINE" REM -------------------------------------------------- REM 設定7-Zip路徑 檢查32位或64位系統 REM -------------------------------------------------- if "%ProgramFiles(x86)%"=="" ( set "SEVEN_ZIP_PATH=%ProgramFiles%\7-Zip\7z.exe" ) else ( REM 64位系統,優先檢查Program Files路徑 if exist "%ProgramFiles%\7-Zip\7z.exe" ( set "SEVEN_ZIP_PATH=%ProgramFiles%\7-Zip\7z.exe" ) else ( set "SEVEN_ZIP_PATH=%ProgramFiles(x86)%\7-Zip\7z.exe" ) ) REM -------------------------------------------------- REM 【生成7-Zip使用的臨時排除規則檔案】 REM -------------------------------------------------- set "VBS_FILE=%TEMP%\get_date.vbs" set "TIMESTAMP=%DATE:/=-%_%TIME::=-%" set "TIMESTAMP=%TIMESTAMP: =0%" set "EXCLUDE_FILE=%TEMP%\7Z_EXCLUDE_%TIMESTAMP%.txt" REM -------------------------------------------------- REM 7-Zip排除指令【-xr!】透過讀取檔案來達成設定 REM 寫入下列排除規則到臨時檔案 REM -------------------------------------------------- ( echo *.bak echo *.old echo *.temp echo *.tmp echo *desktop.ini* echo *Cache* echo *DS_Store* echo *Start Menu* echo *thumbcache_*.db* echo *Thumbs.db* ) > "%EXCLUDE_FILE%" REM 檢查是否成功生成規則檔案 if not exist "%EXCLUDE_FILE%" ( echo 錯誤:無法建立排除規則檔案! if not defined SCHTASKS pause exit /b 1 ) REM -------------------------------------------------- REM 使用 ANSI Escape Code 來實現輸出文字的高亮顯示 REM -------------------------------------------------- for /F "delims=" %%A in ('echo prompt $E^| cmd') do set "ESC=%%A" set "COLOR_ERROR=%ESC%[40;31m" set "COLOR_SUCCESS=%ESC%[40;32m" set "COLOR_WARN=%ESC%[40;33m" set "COLOR_INFO=%ESC%[40;36m" set "COLOR_RESET=%ESC%[40;37m" REM -------------------------------------------------- REM 【自動提升管理員權限】 REM -------------------------------------------------- net session >nul 2>&1 if %errorlevel% neq 0 ( powershell -noprofile -nologo -Command "Start-Process -FilePath '%~f0' -Verb RunAs" 2>nul if !errorlevel! neq 0 ( echo( %COLOR_ERROR%[錯誤] 無法提升管理員權限,將以一般使用者權限執行%COLOR_RESET% timeout /t 2 >nul 2>&1 || ping -n 3 127.0.0.1 >nul ) else ( exit /b ) ) REM -------------------------------------------------- REM 關閉相關程式 REM -------------------------------------------------- echo( ================================================== echo( %COLOR_INFO%[提示] 正在關閉相關程式...%COLOR_RESET% for %%A in (%EXE_NAME%) do ( taskkill /F /IM %%A > nul 2>&1 ) echo( %COLOR_SUCCESS%[成功] 已關閉相關程式%COLOR_RESET% timeout /t 1 >nul REM -------------------------------------------------- REM 【階段1】檢查並設置備份目錄 REM -------------------------------------------------- echo( ================================================== echo( [階段1] 正在檢查並設置備份目錄... if not exist "%BACKUP_DIR%" ( mkdir "%BACKUP_DIR%" if !errorlevel! equ 0 ( echo( %COLOR_SUCCESS%[成功] 備份目錄已建立%COLOR_RESET% timeout /t 1 >nul ) else ( echo( %COLOR_ERROR%[錯誤] 無法建立備份目錄%COLOR_RESET% timeout /t 1 >nul if not defined SCHTASKS pause exit /b 1 ) ) else ( echo( %COLOR_INFO%[提示] 備份目錄已存在,開始執行備份%COLOR_RESET% timeout /t 1 >nul ) REM -------------------------------------------------- REM 【階段2】獲取西曆日期時間 REM -------------------------------------------------- echo( ================================================== echo( [階段2] 正在獲取目前的西曆日期時間... echo WScript.Echo Year(Now) ^& Right("0" ^& Month(Now),2) ^& Right("0" ^& Day(Now),2) ^& "_" ^& Right("0" ^& Hour(Now),2) ^& Right("0" ^& Minute(Now),2) ^& Right("0" ^& Second(Now),2) > "%VBS_FILE%" for /F "usebackq" %%d in (`cscript //nologo "%VBS_FILE%"`) do set "DATETIME=%%d" if exist "%VBS_FILE%" ( del "%VBS_FILE%" if !errorlevel! equ 0 ( echo( %COLOR_SUCCESS%[成功] 西曆日期時間獲取完成:%DATETIME%%COLOR_RESET% timeout /t 1 >nul ) else ( echo( %COLOR_ERROR%[錯誤] 無法清理臨時檔案%COLOR_RESET% timeout /t 1 >nul if not defined SCHTASKS pause exit /b 1 ) ) else ( echo( %COLOR_ERROR%[錯誤] 西曆日期時間獲取失敗%COLOR_RESET% timeout /t 1 >nul if not defined SCHTASKS pause exit /b 1 ) REM -------------------------------------------------- REM 【顯示腳本功能提示】 REM -------------------------------------------------- echo( echo =============== 備份 %SOFTWARE_NAME% 設定資料夾工具 =============== echo( echo( %COLOR_INFO%[提示] 本工具將備份 %SOFTWARE_NAME% 的設定資料夾到 echo( "%BACKUP_DIR%" echo( 備份檔案將以當天日期時間命名,例如 echo( %SOFTWARE_NAME%備份[%DATETIME%].7z%COLOR_RESET% echo( echo --------------- 開始執行,請稍候 --------------- echo( timeout /t 3 >nul REM -------------------------------------------------- REM 【階段3】設置備份檔案名稱並執行備份 REM -------------------------------------------------- echo( ================================================== echo( [階段3] 正在執行備份操作... set "BACKUP_FILE=%BACKUP_DIR%\%SOFTWARE_NAME%備份[%DATETIME%].7z" if exist "%BACKUP_FILE%" ( del "%BACKUP_FILE%" if !errorlevel! neq 0 ( echo( %COLOR_ERROR%[錯誤] 無法刪除舊備份檔案%COLOR_RESET% timeout /t 1 >nul if not defined SCHTASKS pause exit /b 1 ) ) echo( %COLOR_INFO%[提示] 備份至:%BACKUP_FILE%%COLOR_RESET% echo( ================================================== echo( %COLOR_WARN% 正在執行 7-Zip 備份,請勿中斷%COLOR_RESET% echo( ================================================== REM -------------------------------------------------- REM 執行 7-Zip 備份命令,7-Zip排除指令【-xr!】在變數處設置 REM -------------------------------------------------- "%SEVEN_ZIP_PATH%" a -t7z -aoa -ssw -y "%BACKUP_FILE%" "%SRC_FOLDER1%" %COMPRESSION_LEVEL% -xr@"%EXCLUDE_FILE%" if %errorlevel% equ 0 ( echo( ================================================== echo( %COLOR_SUCCESS%[成功] %SOFTWARE_NAME%備份完成%COLOR_RESET% echo( ================================================== timeout /t 1 >nul ) else ( echo( ================================================== echo( %COLOR_ERROR%[錯誤] %SOFTWARE_NAME%備份失敗,請檢查 7-Zip 是否正確安裝%COLOR_RESET% echo( ================================================== timeout /t 1 >nul if not defined SCHTASKS pause exit /b 1 ) REM -------------------------------------------------- REM 清理舊檔案 REM -------------------------------------------------- if exist "%EXCLUDE_FILE%" del "%EXCLUDE_FILE%" >nul 2>&1 REM -------------------------------------------------- REM 展示結束ASCII藝術字DONE REM -------------------------------------------------- echo( echo( ____ ____ _ _ ______ echo( ^| _ \ / __ \ ^| \ ^| ^| ^| ____^| echo( ^| ^| ^| ^|^| ^| ^| ^| ^| \^| ^| ^| ^|__ echo( ^| ^| ^| ^|^| ^| ^| ^| ^| . ` ^| ^| __^| echo( ^| ^|/ / ^| ^|__^| ^| ^| ^|^\ ^| ^| ^|____ echo( ^|___/ \____/ ^|_^| \_^| ^|______^| echo( echo( ================================================== echo( %COLOR_SUCCESS% [腳本執行完畢] 請按任意鍵結束 %COLOR_RESET% echo( 備份壓縮檔已儲存至:"%BACKUP_DIR%" echo( 還原時,請將壓縮檔內容解壓縮至: echo( %COLOR_WARN%"%SRC_FOLDER1%"%COLOR_RESET% echo( ================================================== echo( REM -------------------------------------------------- REM 播放「小星星」旋律 REM 1. 一閃一閃亮晶晶 (C, C, G, G, A, A, G) REM 2. 滿天都是小星星 (F, F, E, E, D, D, C) REM -------------------------------------------------- set "psfile=%TEMP%\twinkle_%RANDOM%.ps1" if exist "%psfile%" del /f /q "%psfile%" REM 寫入 PowerShell 腳本 echo # 定義音符頻率(以 C 調為基礎)>"%psfile%" >>"%psfile%" echo $notes = @{ >>"%psfile%" echo "C" = 523 >>"%psfile%" echo "D" = 587 >>"%psfile%" echo "E" = 659 >>"%psfile%" echo "F" = 698 >>"%psfile%" echo "G" = 784 >>"%psfile%" echo "A" = 880 >>"%psfile%" echo } >>"%psfile%" echo. >>"%psfile%" echo # 定義旋律 >>"%psfile%" echo $melody1 = ^("C","C","G","G","A","A","G"^) >>"%psfile%" echo $melody2 = ^("F","F","E","E","D","D","C"^) >>"%psfile%" echo. >>"%psfile%" echo # 設定播放參數 >>"%psfile%" echo $duration = 110 >>"%psfile%" echo $pauseDuration = 110 >>"%psfile%" echo. >>"%psfile%" echo # 播放第一句 >>"%psfile%" echo foreach^( $note in $melody1 ^) { >>"%psfile%" echo [console]::Beep($notes[$note], $duration) >>"%psfile%" echo Start-Sleep -Milliseconds $pauseDuration >>"%psfile%" echo } >>"%psfile%" echo. >>"%psfile%" echo # 句子間暫停 >>"%psfile%" echo Start-Sleep -Milliseconds $pauseDuration >>"%psfile%" echo. >>"%psfile%" echo # 播放第二句 >>"%psfile%" echo foreach^( $note in $melody2 ^) { >>"%psfile%" echo [console]::Beep($notes[$note], $duration) >>"%psfile%" echo Start-Sleep -Milliseconds $pauseDuration >>"%psfile%" echo } REM 執行並清理 powershell -NoProfile -ExecutionPolicy Bypass -File "%psfile%" del /f /q "%psfile%" 2>nul endlocal if not defined SCHTASKS pause exit /b 0 |
# 批次檔輸出範例:

