🍀【Windows 批次檔教學】如何每月自動搬移舊資料?完整實戰(含安全機制與排程)
🧠 前言(給完全不懂的人)
在企業系統或資料處理流程中,常常會遇到一個問題:
👉 資料一直累積,資料夾越來越大
例如:
- 測試數據(STDF)
- Log 檔
- 報表資料
如果不定期整理,可能會導致:
- 磁碟爆滿
- 系統變慢
- 備份時間變長
所以我們需要一個自動機制:
✅ 每個月自動把「舊資料」搬走
🎯 本篇要解決的問題
我們要做到:
✅ 每月自動執行
✅ 搬移「2 個月前」的資料
✅ 安全(避免誤刪)
✅ 有紀錄(log)
✅ 可先預覽再執行
⚙️ 核心概念(先理解再寫程式)
你可以把整個流程想成:
現在時間:2026/03
⬇
找出:2026/01 以前的資料
⬇
搬到:舊資料資料夾
⬇
記錄搬了什麼
🧩 Step 1:建立自動搬移腳本(核心程式)
📄 PowerShell 腳本(move_old_data.ps1)
# 設定來源與目標資料夾
$sourcePath = "Z:\Data\Current"
$archivePath = "Z:\Data\Archive"
# 設定時間條件(2個月前)
$thresholdDate = (Get-Date).AddMonths(-2)
# 是否為測試模式(true = 不搬移)
$previewMode = $true
# 建立 log 檔
$logFile = "D:\Logs\data_move_$(Get-Date -Format 'yyyyMMdd_HHmm').log"
function Write-Log($message) {
$time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$text = "[$time] $message"
$text | Out-File -Append -FilePath $logFile
Write-Host $text
}
Write-Log "開始執行資料搬移任務"
# 取得符合條件的資料
$files = Get-ChildItem $sourcePath
foreach ($file in $files) {
if ($file.CreationTime -lt $thresholdDate) {
$destination = Join-Path $archivePath $file.Name
if ($previewMode) {
Write-Log "【預覽】將搬移:$($file.FullName)"
}
else {
try {
Move-Item $file.FullName $destination -Force
Write-Log "已搬移:$($file.Name)"
}
catch {
Write-Log "錯誤:$($_.Exception.Message)"
}
}
}
}
Write-Log "任務完成"
🔍 重點說明(簡單講)
這段程式做了 4 件事:
1️⃣ 找出 2 個月前的資料
(Get-Date).AddMonths(-2)
👉 就是「往前推兩個月」
2️⃣ 判斷是否要搬
$file.CreationTime -lt $thresholdDate
👉 只有舊資料才處理
3️⃣ Dry Run(超重要)
$previewMode = $true
👉 開發或第一次執行時用
👉 只顯示,不真的搬
4️⃣ 寫 Log
👉 每次執行都有紀錄
👉 出問題可以追蹤
🧨 常見錯誤(一定要看)
❌ 1. 用 Z 槽但排程抓不到
👉 很多公司排程沒有掛網路磁碟
✅ 建議改成:
\\ServerName\Folder
❌ 2. 搬到一半資料還在寫入
👉 會造成檔案損毀
✅ 解法:
- 只搬「最後修改超過 10 分鐘」的檔案
❌ 3. 不小心全刪
👉 超危險
✅ 解法:
- 一定先用 previewMode
- 不要用 Remove-Item
⏰ Step 2:設定排程(自動化)
使用 Windows 任務排程:
設定方式:
- 開啟「工作排程器」
- 建立基本工作
-
觸發:
- 每月 1 號
- 凌晨 2 點
-
動作:
powershell.exe -File D:\Scripts\move_old_data.ps1
🚀 進階優化(工程師必做)
✅ 加鎖(避免同時執行)
避免兩個排程同時跑
✅ 分批搬移
例如:
👉 一次搬 10 個檔案
✅ 限制記憶體(Java系統)
如果你有搭配 Java:
java -Xmx1024m -jar yourApp.jar
📊 最終效果
執行後你會得到:
📁 Current
↓(舊資料被搬走)
📁 Archive
↑(累積歷史資料)
📄 Logs
✔ 每次都有紀錄
🎯 結論
這套做法可以幫你達到:
✅ 自動整理資料
✅ 不影響系統運作
✅ 降低風險(有 log + 預覽)
✅ 適用銀行 / 半導體 / 大量資料環境
留言
張貼留言