利用 Windows 安裝引擎 (advpack.dll) 執行 .inf 檔案的特性,將維護指令封裝為「偽裝的硬體安裝流程」,再由排程任務定時觸發,實現全自動維護。
路徑:C:\Main.bat (可自訂)
@echo off
cd /d %SystemRoot%\System32
defrag C: /f
chkntfs C:
:: 可自行擴充:xcopy 備份、del 清理暫存檔、sfc /scannow 等
defrag C: /f:強制磁碟重組 (需管理員權限)。chkntfs C::檢查檔案系統完整性。路徑:C:\Main.inf
[version]
Signature="$CHICAGO$"
AdvancedINF=2.5,"advpack.dll"
[DefaultInstall]
RunPreSetupCommands=Tst.PreSetup
RunPostSetupCommands=Tst.PostSetup
[Tst.PreSetup]
C:\Main.bat
[Tst.PostSetup]
C:\WINDOWS\SYSTEM32\TSSHUTDN.EXE 0 /DELAY:0 /POWERDOWN
RunPreSetupCommands:執行維護腳本。RunPostSetupCommands:維護完成後關機 (含切斷電源)。路徑:C:\Begin.bat
@echo off
rundll32.exe advpack.dll,LaunchINFSectionEx C:\Main.inf,DefaultInstall,,32
rundll32.exe advpack.dll,LaunchINFSectionEx:呼叫安裝引擎執行 .inf。,,32 表示 32 位元模式。C:\Begin.bat。
排程任務 (週日 23:30)
↓
Begin.bat
↓
rundll32.exe advpack.dll,LaunchINFSectionEx Main.inf
↓
Main.inf [DefaultInstall]
↓
┌─────────────────────┴─────────────────────┐
↓ ↓
RunPreSetupCommands: RunPostSetupCommands:
C:\Main.bat → defrag, chkntfs... TSSHUTDN.EXE → 關機斷電
在 Main.bat 中加入更多維護指令:
:: 備份重要資料到 D:\Backup
xcopy "D:\MyDocs\*.*" "D:\Backup\MyDocs\" /E /Y /H /R
:: 清理暫存檔
del /f /s /q "%TEMP%\*.*"
del /f /s /q "C:\Windows\Temp\*.*"
:: 系統檔案檢查 (需光碟或已複製 i386 到硬碟)
:: sfc /scannow
advpack.dll 完整功能,無法使用。TSSHUTDN.EXE 會強制關機不提示儲存。defrag 執行時間視磁碟大小/碎片程度而定,可能長達 30-60 分鐘。Begin.bat 測試流程無誤,再啟用排程。此技巧展現了 Windows XP 內建元件 (advpack.dll、排程任務、defrag、TSSHUTDN) 組合自動化的威力。同樣原理可擴展至備份、掃毒、修補程式安裝等任何可命令列操作的維護工作,是批次管理多台 XP 電腦的利器。