【问题标题】:batch file to copy newest backup file批处理文件以复制最新的备份文件
【发布时间】:2013-09-13 10:30:10
【问题描述】:

我目前有一个 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

任何帮助将不胜感激。

谢谢

亚历克斯

【问题讨论】:

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


    【解决方案1】:

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

    @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 扩展名。感谢您的帮助和快速回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多