批量复制问题

时间:2016-04-12 14:52:19

标签: batch-file copy duplicates xcopy

我们有一个集成引擎,可以为相反的主机系统创建txt文件。我们的系统将文件写入本地文件夹。我创建了一个这样的bat文件,并且每1分钟安排一次:

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

Z:\是主机系统的映射文件夹,正在频繁扫描该文件夹。如果文件被处理,它将被主机系统立即删除。

我的问题是,有时文件是重复写的。我的意思是用户将活动视为两次。我认为这是因为这个;考虑主机系统在xcopy执行的同时处理我的文件的时刻,事情搞砸了。我知道不可能在同一时间发生这些但可能是网络滞后导致机器表现得那样?

有什么想法吗?

由于

1 个答案:

答案 0 :(得分: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

它在服务器上单独复制每个文件,然后将文件移动到备份目录。

使用命令 PING ,查看How to sleep for 5 seconds in Windows's Command Prompt的睡眠时间解决方案。您也可以使用命令 TIMEOUT ,具体取决于Windows的版本,这将更好。

此批处理文件必须在启动机器时仅启动一次,并且应该永久运行直到机器关闭。不要每分钟将此批处理文件作为计划任务运行。

每分钟启动批处理文件的计划任务导致处理文件两次出现问题,因为如果复制然后移动所有* .txt文件在1分钟内没有完成,例如由于临时网络问题导致,则启动了另一个批处理过程与仍在运行的批处理过程相同。