问一个问题,备份最新文件的问题
本帖最后由 668674 于 2025-2-14 20:38 编辑; 设置源目录和备份目录的基础路径
Global $sourceDir = "C:\Users\Bjityw\Desktop\11\" ; 替换为你的源目录路径
Global $backupBasePath = "C:\Users\Bjityw\Desktop\22" ; 替换为你的备份基础路径
; 获取源目录中最新的文件
Global $latestFile = GetLatestFile($sourceDir)
If $latestFile = "" Then
MsgBox(16, "错误", "未找到任何文件")
Exit
EndIf
; 创建一个新的备份文件夹,格式为 YYYYMMDD_HHMMSS
Global $timeStamp = StringFormat("%04d%02d%02d", @YEAR, @MON, @MDAY)
Global $backupDir = $backupBasePath & "\" & $timeStamp
; 创建备份文件夹
DirCreate($backupDir)
; 将最新的文件复制到新的备份文件夹中
FileCopy($latestFile, $backupDir & "\" & StringTrimLeft($latestFile, StringInStr($latestFile, "\", 0, -1)))
MsgBox(64, "成功", "文件已成功备份到: " & $backupDir)
Func GetLatestFile($directory)
Local $search = FileFindFirstFile($directory & "\*.*")
If $search = -1 Then
Return ""
EndIf
Local $latestFile = "", $latestTime = 0
While 1
Local $file = FileFindNextFile($search)
If @error Then ExitLoop
Local $filePath = $directory & "\" & $file
Local $fileTime = FileGetTime($filePath, 0, 1)
If $fileTime > $latestTime Then
$latestTime = $fileTime
$latestFile = $filePath
EndIf
WEnd
FileClose($search)
Return $latestFile
EndFunc
问题:我这个始终只备份C:\Users\Bjityw\Desktop\11\目录中产生最新的一个文件,我如何能备份当天产生的所有文件或者指定格式的所有文件?
利用robocopy能很简单的满足你的要求
例如:
每隔1分钟监测C:\Users\Bjityw\Desktop\11目录内文件变动(最后修改时间>=当日),符合条件的文件自动备份到C:\Users\Bjityw\Desktop\22\当日文件夹
robocopy C:\Users\Bjityw\Desktop\11 C:\Users\Bjityw\Desktop\22\%date:~0,4%%date:~5,2%%date:~8,2% /log+:C:\%date:~0,4%%date:~5,2%%date:~8,2%.log /MIR /COPYALL /V /MOT:1 /TEE /R:5/MAXAGE:%date:~0,4%%date:~5,2%%date:~8,2% 本帖最后由 668674 于 2025-2-17 10:50 编辑
wbb870319 发表于 2025-2-14 22:53
利用robocopy能很简单的满足你的要求
例如:
每隔1分钟监测C:%users\Bjityw\Desktop\11目录内文件变动(最后 ...
你这个命令好,这个可以实时同步,采用CMD测试了蛮好,谢谢!
但是这个怎么采用au3来编写?
还有人能帮忙回答下吗? 本帖最后由 afan 于 2025-2-18 21:49 编辑
上面的命令行适合你的话
Local $sDirSource = 'C:\Users\Bjityw\Desktop\11'
Local $sDirDest = 'C:\Users\Bjityw\Desktop\22'
RunWait('robocopy "' & $sDirSource & '" "' & $sDirDest & '" /MIR /COPYALL /MAXAGE:' & @YEAR & @MON & @MDAY, '', 0)
MsgBox(0, '', '完成')
afan 发表于 2025-2-18 19:36
上面的命令行适合你的话
但是这个并没有再C:\Users\Bjityw\Desktop\22目录新建一个当天日期的文件夹,再把数据备份到当天的文件夹内,目前这个只是把11内当天的新的文件备份到C:\Users\Bjityw\Desktop\22内,C:\Users\Bjityw\Desktop\22\20250219\ (20250219是每次备份自动生成的一个文件夹) 668674 发表于 2025-2-19 17:34
但是这个并没有再C:%users\Bjityw\Desktop\22目录新建一个当天日期的文件夹,再把数据备份到当天的文件夹 ...
最最基础的东西都不会?
Local $sDirDest = 'C:\Users\Bjityw\Desktop\22\' & @YEAR & @MON & @MDAY afan 发表于 2025-2-19 22:42
最最基础的东西都不会?
Local $sDirDest = 'C:%users\Bjityw\Desktop\22\' & @YEAR & @MON & @MDAY ...
本人不才,非常感谢!
页:
[1]