【问题标题】:copy latest four files using batch file使用批处理文件复制最新的四个文件
【发布时间】:2015-02-06 07:39:58
【问题描述】:

我想从 Directory 中复制最新的 4 个 SQL 备份文件。现在我有一个代码,这个复制最新的一个文件,但我想复制最新的四个文件。

我的发件人位置是:E:\BackUp
目标位置是:D:\BackUp

代码:

FOR /F "delims=|" %%I IN ('DIR "E:\BackUp\*.bak" /B /O:D /S') DO SET NewestFile=%%I
copy "%NewestFile%" "D:\BackUp"

而且我还需要批处理文件来复制创建日期为今天的所有文件。 已使用“/d”但无法得到正确结果?

我该怎么做?

【问题讨论】:

    标签: batch-file window


    【解决方案1】:

    我会用这个:

    :: Variables are A, B, C, D
    DIR "E:\BackUp\*.bak" /B /O:D /S > filelist.tmp
    3<filelist.tmp (
      for %%a in (A B C D) do (
        set /p %%a=<&3
      )
    )
    del filelist.tmp
    :: Newest File
    copy "%A%" "D:\BackUp" 
    :: Second Newest File
    copy "%B%" "D:\BackUp" 
    :: Thirst Newest File
    copy "%C%" "D:\BackUp" 
    :: Fourth Newest File
    copy "%D%" "D:\BackUp" 
    

    至于复制今天创建的每个文件,将其作为一个单独的问题发布在 SO 上。

    【讨论】:

    • 嗨 @monacraft 已经使用了你的代码,但它会复制最旧的 4 个文件,而不是复制最新的 4 个文件..
    【解决方案2】:

    您可以使用与this solution中描述的“Tail.bat”程序相同的方法:

    编辑根据 cmets 的要求修改

    @echo off
    setlocal EnableDelayedExpansion
    
    set /A firstTail=1, lastTail=0
    
    for /F "delims=" %%a in ('dir "E:\BackUp\*.bak" /B /O:D /S') do (
       set /A lastTail+=1, lines=lastTail-firstTail+1
       set "lastLine[!lastTail!]=%%a"
       if !lines! gtr 4 (
          set "lastLine[!firstTail!]="
          set /A firstTail+=1
       )
    )
    for /L %%i in (%firstTail%,1,%lastTail%) do (
       for /F "delims=_" %%a in ("!lastLine[%%i]!") do (
          copy "!lastLine[%%i]!" "D:\BackUp\%%a.bak"
       )
    )
    

    【讨论】:

    • 嗨@Aachini 我还有一个要求,我也想重命名这四个文件,例如文件名将是 Database1_02082015.bak、Database2_02082015.bak、Database3_02082015.bak、Database3_02082015.bak 类似这样的东西,我想在“_”之后删除,删除后的文件名应该是Database1.bak,Database2.bak,Database3.bak,Database4.bak 我该如何实现这个请帮帮我..
    • 嗨@Aachini 已经删除了我的新问题很抱歉,已经测试了您修改的代码但没有复制文件,错误消息只显示错误消息是“文件名、目录名称或卷标语法不正确.
    猜你喜欢
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多