簡體   English   中英

批處理腳本從文件夾復制最新文件

[英]Batch Script to copy latest file from Folder

我想將最新的文件從文件夾(和子文件夾)復制到新位置。 下面的代碼很好用,但是我不想按日期和時間(/ O:D)進行過濾,而僅按DATE進行過濾,因此來自同一日期的所有文件都將作為最新文件復制到新位置。

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

您可以使用xcopy /D完成所需的操作:

 /D:mm-dd-yyyy
                Copy files changed on or after the specified date.
                If no date is given, copy only files whose
                source date/time is newer than the destination time.
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set "dt=%%a"
set "YYYY=%dt:~0,4%"
set "MM=%dt:~4,2%"
set "DD=%dt:~6,2%"

set datestamp=%MM%-%DD%-%YYYY%

XCOPY D:\Backups\DB\*.bak D:\Latest\ /S /D:%datestamp%

問題:

這段代碼可以實現我想要的功能,但是它也可以復制文件的父子文件夾。 由於D:\\ Backups \\ DB \\文件夾中的每個.bak文件都位於D:\\ Backups \\ DB的子目錄中。 例如:

D:\\ Backups \\ DB \\ 2013-12-01 \\ 20131201.bak被復制為

D:\Latest\2013-12-01\20131201.bak

並不是

D:\Latest\20131201.bak

如何防止.bak文件的父子文件夾復制到新位置?

@echo off
set source="E:\backups\daily\database1"
set target="E:\backups\daily\newdb.bak"

FOR /F "delims=" %%I IN ('DIR %source%\*.bak /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END
:END
REM this copy a newest file at E:\backups\daily\database1 folder 
REM to other folder E:\backups\daily\ and the file name changed to newdb.bak

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM