我想从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
”但我无法得到正确的结果?
我该怎么做?
答案 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"
)
)