前提:
每隔n秒运行一次脚本,这将创建已定义文件到指定位置的备份。 创建n个备份后,清除(删除)过时的。
问题:
我已设法使用此版本来备份文件夹并删除较旧的版本,但是当我尝试使用特定文件“没有找到文件”时。 我现在已经摸不着头几个小时了,我可能会错过一些小事。 我不只是想删除所有.xlsx文件,例如,因为Target文件夹中可能存在多个不同的.xlsx文件。 如果有3个新版本可用,我只想删除旧版本的“File1”。
有什么事我能做到吗?我已尝试使用通配符,如下所示,但没有运气......
请帮助:(
瓦尔:
- Schedule=60 (Time inseconds between each backup)
- NumFiles=3 (How many backup versions to keep)
- File1Path=D:\Source (Location to copy files from)
- File1=backmeup.xlsx (Filename & extension)
- BackupPath=D:\Target (Location to copy files to)
代码段:
@echo off
Color 02
mode con: cols=150 lines=25
:Start
SET Schedule=60
SET NumFiles=3
SET File1Path=D:\Source
SET File1=backmeup.xlsx
SET BackupPath=D:\Target
echo Press any key to begin.
pause >nul
echo.
:Single1
FOR /F %%a IN ('WMIC OS GET LocalDateTime ^| FIND "."') DO SET DTS=%%a
SET DateTime=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%@%DTS:~8,2%%DTS:~10,2%
IF DEFINED File1Path (
xcopy "%File1Path%\%File1%" "%BackupPath%\_BACKUP_%DateTime%_%File1%*" /h /d /y /c /i /q /r /k >nul
( for /f "skip=%NumFiles% delims=" %%F in ('dir "%BackupPath%" /b /a:-dh /o:-d "%File1%"') do echo del /q "%BackupPath%\%%F"
( goto SingleDone ))) ELSE ( goto End )
:SingleDone
echo Backups created - %DateTime%
TIMEOUT /T %Schedule% /NOBREAK
GOTO Single1
:End
echo Something is not defined or incomplete.
echo Press any key to exit.
pause >nul
exit
答案 0 :(得分:0)
要进行备份,简单的答案就是使用xcopy
。要删除旧文件/目录,请使用以下命令
forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"