2016-08-18 42 views
0

我需要一個腳本,它將將文件從指定時間(從文件中讀取)從目錄和子文件夾複製到更新的文件轉換爲鏡像文件夾結構(需要創建)。但是,這需要考慮日期和時間,而不僅僅是日期。批處理:只複製比日期和時間更新的文件

我似乎無法找到一種方法來使用批/ robocopy或其他方法來做到這一點。任何建議,將不勝感激,理想情況下不使用powershell(我意識到它可以做到這一點,但我從來沒有使用它,現在的學習曲線似乎有點陡峭)。

我可以調整保存在文件中的日期/時間以適應任何格式。

所以,說日期與時間2016-08-17-18-00-00,然後

Org\A\1.txt  (2016-08-17-18-01-00) > Target\A\1.txt 
Org\A\2.txt  (2016-08-17-17-00-00) > (not copied, as too old) 
Org\B\C\D\3.txt (2016-08-18-09-00-00) > Target\B\C\D\3.txt 

我可能需要使用forfiles循環,但不知道如何考慮的時間,以及日期。

+1

你有這樣一個美好的格式 - 你可以做只是字符串比較'如果「2016-08-17-18-01-00」gtr「2016-08-17-18-00-00」... '。使用'for'循環來處理文件。 'for /?','if /?' – Stephan

+0

使用forfiles生成包含所有舊文件名的exclude.txt文件。然後將其傳遞給'xcopy/EXCLUDE:exclude.txt' – FloatingKiwi

+1

@FloatingKiwi:'forfiles'只能使用日期,沒有時間。 – Stephan

回答

0
@echo off 
setlocal enabledelayedexpansion 
set compare=201608171800 

for /r %%F in (*) do (
    set file=%%~fF 
    for /f "tokens=2 delims=.=" %%I in ('wmic datafile where name^="!file:\=\\!" get lastmodified /format:list') do (
    if "%%I" geq "%compare%" for /f "tokens=2,* delims=\" %%A in ("%%~fF") do echo %%~fF -- N:\target\%%B 
) 
) 

您可能需要根據自己的需要調整tokens=2,*中的「2」。

注:這是緩慢的,因爲wmic
因爲字符串比較這個作品與YYYYMMDDhhmmssYYYYMMDDhhmm甚至YYYY%compare%格式。

+0

謝謝。如果有人正在看這個,並知道一個純粹的批處理方式,我會很感激。雖然它可能不存在。 – Nick

+0

ahem ...這**是**純批... – Stephan

+0

我的意思是沒有WMIC。 – Nick

相關問題