2016-04-12 77 views
0

我們有一個集成引擎,它爲相反的主機系統創建txt文件。我們的系統將文件寫入本地文件夾。我創造了這樣一個bat文件,並定於每1分鐘:批量複製問題

xcopy /v /y E:\*.txt Z:\ 
move E:\*.txt E:\Processed (for backup purpose) 

Z:\是主機系統的映射文件夾,該文件夾被掃描次數。如果文件被處理,它將被主機系統立即刪除。

我的問題是,有時文件被寫入重複。我的意思是用戶將活動視爲兩次。我認爲那是因爲這個;考慮一下主機系統在xcopy執行的同時處理我的文件並且事情會搞砸的時刻。我知道同時發生這些事情是不可能的,但也許網絡滯後會導致機器的行爲如此呢?

任何想法?

謝謝

回答

0

如何使用下面的批處理文件?

@echo off 
set "SleepTimeInSeconds=60" 

rem For sleep time using PING command 1 must be added 
rem because the first trial is always successful. 
set /A SleepTimeInSeconds+=1 

:NextRun 
echo %TIME% Searching for files to copy and move ... 

for %%I in (E:\*.txt) do (
    copy /B /V /Y /Z "%%I" Z:\ 
    move /Y "%%I" E:\Processed\ 
) 

%SystemRoot%\System32\ping.exe 127.0.0.1 -n %SleepTimeInSeconds% >nul 
goto NextRun 

它在服務器上分別複製每個文件,然後將文件移動到備份目錄。

請參閱How to sleep for 5 seconds in Windows's Command Prompt使用命令PING的睡眠時間解決方案。你也許也可以使用命令TIMEOUT,這取決於Windows的版本,它會更好。

該批處理文件必須在機器啓動時只啓動一次,並且應該一直運行直到機器關閉。不要每分鐘都按計劃任務運行此批處理文件。

每分鐘啓動一次批處理文件的計劃任務都會導致兩次處理文件的問題,因爲如果複製並移動所有* .txt文件在1分鐘內未完成(例如,由臨時網絡問題引起),則另一批處理爲開始與仍在運行的批處理過程一樣。