Windows 10下如何自动备份指定文件至目标文件夹
实现Windows 10下指定文件修改时自动备份到目标文件夹
以下是三种可行的方案,按需选择:
方案一:PowerShell实时监控脚本(实时触发)
通过FileSystemWatcher监听文件修改事件,一旦目标文件更新就立即执行备份。
- 新建一个文本文件,粘贴以下代码,保存为
BackupWeek1PDF.ps1(比如存到d:\scripts目录):
$sourcePath = "d:\homework\week1.pdf" $targetDir = "e:\backup" # 确保目标目录存在 if (-not (Test-Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir | Out-Null } # 初始化文件监控器,只监控源文件所在目录的指定文件 $watcher = New-Object System.IO.FileSystemWatcher $watcher.Path = Split-Path $sourcePath -Parent $watcher.Filter = Split-Path $sourcePath -Leaf $watcher.IncludeSubdirectories = $false $watcher.EnableRaisingEvents = $true # 定义文件修改后的执行逻辑 $onChanged = Register-ObjectEvent $watcher "Changed" -Action { $sourceFile = $Event.SourceEventArgs.FullPath $targetFile = Join-Path $Event.MessageData $Event.SourceEventArgs.Name # 等待2秒避免文件处于锁定状态无法复制 Start-Sleep -Seconds 2 Copy-Item -Path $sourceFile -Destination $targetFile -Force Write-Host "已完成备份: $sourceFile -> $targetFile" } -MessageData $targetDir # 保持脚本运行,按Ctrl+C停止 Write-Host "开始监控文件: $sourcePath,按Ctrl+C退出" try { while ($true) { Start-Sleep -Seconds 1 } } finally { # 清理监控器和事件 Unregister-Event $onChanged.Id $watcher.Dispose() }
- 运行脚本:
- 右键点击脚本,选择“用PowerShell运行”,或者在命令提示符中执行:
powershell -ExecutionPolicy Bypass -File "d:\scripts\BackupWeek1PDF.ps1" - 如果需要后台运行,添加
-WindowStyle Hidden参数:powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File "d:\scripts\BackupWeek1PDF.ps1" - 若要开机自动启动,可将该命令创建成快捷方式,放到
C:\Users\[你的用户名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目录下。
- 右键点击脚本,选择“用PowerShell运行”,或者在命令提示符中执行:
方案二:批处理脚本+任务计划(定时检查触发)
如果不想长期运行监控脚本,可以通过任务计划定时检查文件是否修改,仅当文件更新时执行备份。
- 新建文本文件,粘贴以下代码,保存为
BackupWeek1.bat(比如存到d:\scripts目录):
@echo off set "source=d:\homework\week1.pdf" set "target=e:\backup\week1.pdf" REM 检查源文件是否存在 if not exist "%source%" ( echo 错误:源文件不存在 - %source% exit /b 1 ) REM 创建目标目录(如果不存在) if not exist "e:\backup\" mkdir "e:\backup\" REM 对比源文件和目标文件的内容,不同则复制覆盖 fc /b "%source%" "%target%" >nul if errorlevel 1 ( echo 文件已修改,执行备份... copy /y "%source%" "%target%" echo 备份完成 )
- 设置任务计划:
- 打开「任务计划程序」,点击「创建基本任务」
- 名称填“自动备份Week1PDF”,点击下一步
- 触发器选择“每天”或“每隔X分钟”(比如每隔5分钟),设置合适的执行频率,点击下一步
- 操作选择“启动程序”,程序或脚本填
cmd.exe,添加参数填/c "d:\scripts\BackupWeek1.bat",点击下一步 - 勾选“当单击完成时,打开此任务属性的对话框”,点击完成
- 在属性窗口中,切换到「设置」标签,勾选“不管用户是否登录都要运行”,并选择“隐藏”窗口,确保脚本后台执行。
方案三:Robocopy监控模式(轻量实时同步)
利用Windows自带的robocopy命令(无需额外脚本),实现指定文件的实时同步。
直接在命令提示符中执行以下命令:
robocopy "d:\homework" "e:\backup" "week1.pdf" /MON:1 /MOT:1 /R:3 /W:5
参数说明:
/MON:1:当源目录有1个文件(即week1.pdf)被修改时,立即触发同步/MOT:1:若1分钟内无修改,自动检查一次(避免遗漏临时修改)/R:3:复制失败时重试3次/W:5:重试间隔5秒
如果需要开机自动运行,可将该命令创建成快捷方式,放到启动目录(同方案一的启动目录),或通过任务计划设置开机启动并隐藏窗口。
注意事项
- 确保执行脚本/命令的账号有源文件的读取权限和目标文件夹的写入权限,必要时右键选择“以管理员身份运行”
- 若文件经常处于被编辑锁定的状态(比如打开的PDF),可适当延长PowerShell脚本中的
Start-Sleep时间,或在批处理中添加延迟命令 - 所有脚本路径建议使用绝对路径,避免因工作目录变化导致错误
内容的提问来源于stack exchange,提问作者vivian
相关产品推荐
相关产品推荐

