Board logo

标题: [文本处理] 紧急求助批处理定时备份文件 [打印本页]

作者: 43397776    时间: 2022-7-22 17:05     标题: 紧急求助批处理定时备份文件

请教各位大神!
   如何用批处理把一个文件夹下的所有文件备份备份到另一个文件夹下(如: D:123\456,备份到E:111\222)
     需求:
      1、每6小时自动备份一次;
      2、备份后的文件以备份当时的时间命名!
      3、自动覆盖或者删除前10天的备份,
作者: flashercs    时间: 2022-7-22 17:27

robocopy 可以了解一下
作者: 43397776    时间: 2022-7-22 17:53

回复 2# flashercs


    您好 不太懂
作者: flashercs    时间: 2022-7-22 19:11

  1. <#*,:&cls
  2. @echo off
  3. cd /d "%~dp0"
  4. powershell -C "Set-Location -LiteralPath ([Environment]::CurrentDirectory);. ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~f0\" -ReadCount 0 | Out-String)))"
  5. pause
  6. exit /b
  7. #>
  8. # 间隔时间(单位:秒)
  9. $delay = 6 * 60 * 60
  10. # 备份源文件夹
  11. $srcdir = "d:\test\d\04"
  12. # 备份目标文件夹
  13. $dstdir = "d:\test\d\05"
  14. while ($true) {
  15.   # 备份
  16.   [System.IO.DirectoryInfo]$dstdir2 = [System.IO.Directory]::CreateDirectory([System.IO.Path]::Combine($dstdir, (Get-Date -Format 'yyyyMMddHHmmssfff')))
  17.   Copy-Item -LiteralPath $srcdir -Destination $dstdir2 -Recurse -Verbose
  18.   # 删除前10天的备份目录
  19.   (Get-ChildItem -LiteralPath $dstdir | Where-Object { $_.PSIsContainer }) | ForEach-Object {
  20.     $span0 = $_ | New-TimeSpan
  21.     if ($span0.Days -ge 10) {
  22.       $_ | Remove-Item -Recurse -Force -Verbose
  23.     }
  24.   }
  25.   Start-Sleep -Seconds $delay
  26. }
复制代码

作者: 43397776    时间: 2022-7-23 16:06

回复 4# flashercs


    非常感谢!
作者: 43397776    时间: 2022-7-23 16:08

回复 4# flashercs


    <#*,:&cls
@echo off
cd /d "%~dp0"
powershell -C "Set-Location -LiteralPath ([Environment]::CurrentDirectory);. ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~f0\" -ReadCount 0 | Out-String)))"
pause
exit /b   
   

    老师,方便给说一下以上代码的含义吗?谢谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2