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

Batch file 批处理文件以复制最新的备份文件,batch-file,sql-server-2008-r2,copy,Batch File,Sql Server 2008 R2,Copy,我目前有一个SQL作业(SQL Server 2008 R2),它检查文件夹中的所有备份文件,然后动态创建一个批处理文件,以将最近的备份文件复制到具有新名称的新位置,以便可以将其压缩到其他备份文件中 我希望自己将其转换为批处理文件,而不需要首先运行SQL Server部件。但无法确定如何查找最新的备份文件。一些联机检查显示了如何获取文件夹中的最新文件,但在同一文件夹中有事务日志备份 基本上,我认为会是这样的: for /f %%x in ('dir "J:\Program Files\Micro

我目前有一个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
任何帮助都将不胜感激

谢谢


Alex

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

@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

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

这非常有效!事务日志没有.bak扩展名。谢谢你的帮助和快速回复