2015-09-16 26 views
0

我有兩個文件夾。BATCH文件通過比較字符串和文件名上的日期和時間來移動文件

的folder1:C:\one\firstfolder
文件:
111-YYYYMMDD-HHMMSSms
222-YYYYMMDD-HHMMSSms
或前3位數字和日期和時間的任何值。

文件夾2:C:\two\secondfolder
文件:
111-YYYYMMDD-HHMMSSms
222-YYYYMMDD-HHMMSSms
或前3位數字和日期和時間的任何值。

我的要求是將第二個文件夾文件與第一個文件夾文件進行比較。

(如果第一個三位數的代碼是在文件和文件夾1文件時間戳的文件夾2文件時間戳之前一樣,沒有需要處理的文件)
其他
((如果在文件夾1無文件)或(若前三位數字代碼相同,而folder1文件時間戳記位於folder2文件時間戳後面,我們需要將這些文件移動到其他文件夾,稱爲C:\ two \ secondfolder \ work))。

+1

請認爲這何嘗不是一個代碼編寫的服務;所以分享你迄今爲止所嘗試的內容,並通過編輯你的文章來描述你陷入困境的地方;謝謝! – aschipfl

回答

0

這也應該適用於有超過1個文件與文件名第一部分匹配的情況。

但它是未經測試:

@echo off 
set "target=C:\two\secondfolder\work" 
set "source1=C:\one\firstfolder" 
set "source2=C:\two\secondfolder" 
if exist "%source2%\*-*" dir "%source1%" /b /a-d >nul 2>&1 || move "%source2%\*-*" "%target%\" >nul 
for /f "tokens=1-2,* delims=-" %%a in ('dir "%source1%\*-*" /b /a-d ') do (
    for /f "tokens=1-2,* delims=-" %%x in ('dir "%source2%\%%a-*" /b /a-d ') do (
     if %%b%%c GTR %%y%%z (
     if exist "%source1%\%%a-%%b-%%c" move "%source1%\%%a-%%b-%%c" "%target%\" >nul 
     move ""%source2%\%%x-%%y-%%z" "%target%\" >nul 
    ) 
) 
) 
pause 
+0

謝謝。我測試過這個...如果source1中沒有文件,文件不會從source2移動到目標。請幫我在哪裏需要改變邏輯。 – Sruthi

+0

source2中的文件名有連字符嗎? – foxidrive

+0

是的。文件名格式在兩個源文件夾中都是222-YYYYMMDD-HHMMSSms。 – Sruthi