使用批处理文件复制最新的四个文件

时间:2015-02-06 07:39:58

标签: batch-file window

我想从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”但我无法得到正确的结果?

我该怎么做?

2 个答案:

答案 0 :(得分:0)

我会用这个:

:: 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上。

答案 1 :(得分:0)

你可以使用&#34; Tail.bat&#34;程序,如this solution

中所述

编辑按照评论中的要求进行了修改

@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"
   )
)