[英]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.