将日志文件中不存在的文件复制到文件夹

时间:2014-03-04 19:58:43

标签: batch-file for-loop findstr

基本上我需要能够从源文件夹中复制新文件,这些文件在上次脚本运行到目标文件夹时不存在。

以下是我的想法:

-Script每1分钟运行一次 - 源文件夹 - 目标文件夹 -Log文件记录复制的文件

过程:

- 按文件运行目录文件并检查日志文件以确定是否需要复制文件。

- 如果文件存在于日志文件中,请勿复制

- 如果文件不存在于日志文件中,复制到目标文件夹,将文件路径/文件名写入日志文件

- 继续目录

中的下一个文件

这就是我所拥有的,但我遇到的问题是findtr并不完全确定这是最好的方法。

@echo off
:start

for /r "C:\Source" %%i in (*) do (

    echo --------------------------------------
    echo Searching for: %%i
    type log.txt | findstr /L "%%i"

    if %ERRORLEVEL% EQU 1 ( 
    echo NOT FOUND
    goto copyfile 
    )
    if %ERRORLEVEL% EQU 0 ( 
        echo FOUND
    )
echo ------------------------------------------

:copyfile 
echo ------------------------------------------------------------------
echo Copy %%i
copy "%%i" C:\Destination
echo Writing to log file: %%i
echo -------------------------------------------------------------------
echo %%i >> log.txt

)

我非常感谢这种见解。谢谢大家的时间。

1 个答案:

答案 0 :(得分:1)

正如 MC ND 指出RoboCopy是答案,当然对我有用。

robocopy source-path destination-path /r:30 /w:20 /mon:1 /mot:1 /log+: path-to-log

/ r:30 - 如果发生复制错误,则重试复制30次
/ w:20 - 在重试复印之前等待20秒
/ mon:1 - 监视源目录以更改1个文件
/ mot:1 - 在检查更改前等待1​​分钟
/ log +: - 追加到日志文件

要在cmd类型robocopy /?

中查看有关Robocopy的更多信息