2014-09-23 65 views
1

我想創建一個批處理文件,它將只複製新創建的文件夾。我使用下面的代碼,但是這只是選擇文件(文本文件或xml文件)而不是文件夾。批處理文件只複製新創建或修改的文件夾

xcopy "D:\Splunk\var\lib\splunk\defaultdb\db" "D:\test\Incremental_data_backup\" /m 

請建議什麼,我缺少的

感謝 維卡斯

+0

所以,你只想創建空文件夾,或者你想要文件夾和它們可能包含的任何文件?你也希望你複製的文件比目的文件中的文件更新,還是你希望它們比給定的日期更新? – ventsyv 2014-09-23 18:26:21

+0

,因爲我想每天晚上10點安排這個批處理文件。所以它應該檢查源文件夾,只複製那些僅在今天創建的文件。類似地,當計劃程序第二天運行這個bacth時,它將檢查源是否有新文件夾....我希望我明確自己...... – user3332404 2014-09-23 18:35:48

回答

2

您可以使用XCOPY對於這一點,只需要指定正確的選項。這裏是轉發給你是相:

/H複製隱藏和系統文件和文件夾(默認= N)

/d:MM-DD-YYYY 複製文件改變上或在指定日期之後。 如果沒有給出日期,只複製源日期/時間比目標時間更新的文件。

/S複印的文件夾和子文件夾

/E複印的文件夾和子文件夾,包括空文件夾。 可能用於修改/ T。

所以沿着

xcopy <src> <dest> /HE /D:mm-dd-yyy 

腳本日線的東西是一個比較複雜:

%日期:〜4.2% - 月 %日期:-4% - 今年 %日期:7,2〜% - 天

所以,當前的日期將是:

%date:~4,2%-%date:~7,2%-%date:-4% 
1

您可以使用此代碼嘗試。我使用參數標記爲修改的文件夾

REM set up the TODAY variable 
REM ----- 
for /f "tokens=1-3 delims=/ " %%a in ('date /T') do set year=%%c 
for /f "tokens=1-3 delims=/ " %%a in ('date /T') do set month=%%b 
for /f "tokens=1-3 delims=/ " %%a in ('date /T') do set day=%%a 
set TODAY=%year%%month%%day% 
REM ----- 

:: yesterdays date 
@echo off 
set day=-1 
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 "YY=%result:~2,2%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "data=%mm%-%dd%-%yy%" 

xcopy D:\YourFolder D:\BAK\BAK_%TODAY% /S /D:%data% /C /R /I /K /Y 
相關問題