2014-02-21 35 views
0

我有不斷用pdf文件更新的目錄。文件名看起來像這樣:基於文件名中的日期字符串移動文件批次

0001_2014_02_14_000000001_018_001_000.pdf 

0001_2014_02_14_000000002_018_002_000.pdf 

0001_2014_02_15_000000003_018_001_000.pdf 

0001_2014_02_15_000000004_018_002_000.pdf 

我將如何創建一個批處理文件,將解析日期(字符位置6)和文件移動到一個名爲d:\send目錄。爲了使它更復雜,我需要從今天的日期減去3天,只移動這些文件。順便說一句,文件的修改日期將不起作用。正確的日期是文件名中的日期。

例如:今天 是2014年2月21日 發現有0001_2014_02_18_??????????.pdf前綴,並將它們發送到d:\send

當然今天的日期將每天都在變化,這將被預定爲每天運行的文件。

感謝您的幫助。

+1

這或許可以用這樣的回答來完成http://stackoverflow.com/questions/51054/batch-file-to-delete-files-older-than -n-days?rq = 1 –

+0

@preetsangha該鏈接僅顯示比給定數字「老」的文件的示例,並不完全等於它。 – foxidrive

回答

0

測試此的一些示例文件:

@echo off 
set day=-3 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YYYY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
move "????_%yyyy%_%mm%_%dd%_*.pdf" "d:\send" 
pause 
+0

我明白你要去哪裏了。它應該工作,但我得到「存在重複文件或無法找到文件。」現在檢查路徑和文件名。支持。 – user3338615

+0

工作!非常感謝! – user3338615

相關問題