电脑上重要数据一定要做备份,万一哪天硬盘突然挂了,恢复数据的费用可是很高的。

我的电脑有2块硬盘,以下脚本是将硬盘一(D盘)上的重要数据,定时备份到硬盘二(E盘)上。将以下脚本保存为bat格式,然后Windows计划任务添加一个计划任务定期执行即可。

@echo off
:: 获取当前年月
for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set backupdir=E:\Backup\%year%-%month%

:: 创建目标文件夹(如果不存在)
if not exist "%backupdir%" (
    mkdir "%backupdir%"
)

:: 备份 D:\重要资料
robocopy "D:\重要资料" "%backupdir%\重要资料" /E /COPYALL /R:3 /W:5 /LOG+:"%backupdir%\backup_log.txt"

:: 备份 D:\超级重要资料
robocopy "D:\超级重要资料" "%backupdir%\超级重要资料" /E /COPYALL /R:3 /W:5 /LOG+:"%backupdir%\backup_log.txt"

:: 备份 D:\超级超级重要资料
robocopy "D:\超级超级重要资料" "%backupdir%\超级超级重要资料" /E /COPYALL /R:3 /W:5 /LOG+:"%backupdir%\backup_log.txt"

:: 提示完成
echo Backup completed on %date% at %time%

脚本逻辑解析

1. 获取当前年月

for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set backupdir=E:\Backup\%year%-%month%
  • 使用 wmic os get localdatetime /value 获取系统时间,格式通常为 YYYYMMDDhhmmss...
  • set year=%datetime:~0,4% → 截取前4位作为年份。
  • set month=%datetime:~4,2% → 截取第5-6位作为月份。
  • 拼接成目标备份目录:E:\Backup\2025-12

2. 创建目标文件夹

if not exist "%backupdir%" (
    mkdir "%backupdir%"
)
  • 如果目录不存在,则新建。
  • 确保备份不会因目录缺失而失败。

3. 使用 Robocopy 进行备份

robocopy "D:\重要资料" "%backupdir%\重要资料" /E /COPYALL /R:3 /W:5 /LOG+:"%backupdir%\backup_log.txt"
  • 源目录D:\重要资料
  • 目标目录E:\Backup\YYYY-MM\重要资料
  • 参数说明:

    • /E → 复制所有子目录,包括空目录。
    • /COPYALL → 复制所有文件属性(包括安全权限、时间戳等)。
    • /R:3 → 遇到错误时重试 3 次。
    • /W:5 → 每次重试间隔 5 秒。
    • /LOG+:"..." → 将日志追加写入 backup_log.txt

同样的逻辑应用到 D:\超级重要资料D:\超级超级重要资料

4. 提示完成

echo Backup completed on %date% at %time%
  • 在命令行输出完成提示,显示日期和时间。
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-12-23 14:54:31

results matching ""

    No results matching ""