批处理文件以复制最新的备份文件

时间:2013-09-13 10:30:10

标签: batch-file sql-server-2008-r2 copy

我目前有一个SQL作业(SQL Server 2008 R2),它检查文件夹中的所有备份文件,然后动态创建一个批处理文件,将最近的文件复制到一个新名称的新位置,以便它可以压缩其他备份文件。

我希望将其转换为自己的批处理文件,而无需先运行SQL Server部分。但无法弄清楚如何找出最新的备份文件。一些在线检查显示了如何在文件夹中获取最新文件,但在同一文件夹中有事务日志备份。

基本上我认为它会是这样的:

for /f %%x in ('dir "J:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\CommonInterface\*.bak" /B /O:-D') do set NEWEST_BAK & goto DONE

:DONE
copy "%newest%" F:\backup\new.bak
Pause

但是会出错:

Environment variable NEWEST_BAK not defined

非常感谢任何帮助。

由于

亚历

1 个答案:

答案 0 :(得分:0)

除非有数千个文件,否则这不需要从循环中断。

@echo off
pushd "J:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\CommonInterface"
for /f "delims=" %%x in ('dir "*.bak" /B /O:D') do set "NEWEST_BAK=%%x"
copy "%newest_bak%" "F:\backup\new.bak"
popd
Pause

必须排除事务日志备份,我们需要知道命名方案,或者如果最新文件始终是您需要的,那么以上内容将起作用。