批处理获取最新文件
在C:/A 文件夹中有多个数据库备份文件,全备份文件名为database_full_备份时间.bak,差异备份文件名为database_diff_备份时间.bak,我想写一个批处理来选择最新的备份文件,规则如下:
1、如果最新的备份文件为全备份文件,则直接复制全备份文件到文件目录C:/B
2、如果最新的备份文件为差异备份文件,则还需要再找到最后一次的全备份文件,然后将两个文件复制到文件目录C:/B
批处理实在不是很懂,哪位高手帮帮忙,非常感谢!
[解决办法]
@echo off
setlocal enabledelayedexpansion
set src_dir=c:\a
set dst_dir=c:\b
set last_full_time=0
set last_diff_time=0
for /r "%src_dir%" %%a in (*) do (
for /f "tokens=2,3 delims=_" %%b in ("%%~na") do (
if "%%b"=="diff" (
if %%c gtr !last_diff_time! (
set last_diff_time=%%c
set last_diff_name=%%a
)
) else (
if %%c gtr !last_full_time! (
set last_full_time=%%c
set last_full_name=%%a
)
)
)
)
if %last_full_time% equ 0 goto :eof
if %last_diff_time% equ 0 goto :eof
if %last_full_time% lss %last_diff_time% copy /b "%last_diff_name%" "%dst_dir%"
copy /b "%last_full_name%" "%dst_dir%"
echo A
goto end
:end
pause