结合 RoboCopy 和 FtpUse

use*_*306 7 windows robocopy ftp

我们的客户需要通过 FTP 将指定的文件从他们的网络传输到我们的网络。每当指定文件之一发生更改时,都必须自动调用传输。为此,RoboCopy 是完美的。但是,RoboCopy 不支持传输到 FTP 地址。所以,我想将我们的 FTP 站点映射到客户端服务器上的驱动器号。我发现FtpUse非常适合将 FTP 映射到驱动器号。映射按预期工作,我可以在 Windows 资源管理器中看到 FTP 站点的内容 - 我还可以将数据写入映射的 FTP 驱动器。

因此,假设我已使用以下命令将 FTP 站点映射到本地计算机上的驱动器 Q:

ftpuse Q: [ftp address] [password] /USER:[username]
Run Code Online (Sandbox Code Playgroud)

并尝试使用以下命令设置 RoboCopy:

robocopy [source dir] Q:\ *.xls *.xlsx /COPY:DAT /LOG+:"[LogDir]\FtpCopyLog.txt" /V /NP /MON:1 /MOT:1 /R:10 /W:30 
Run Code Online (Sandbox Code Playgroud)

当 RoboCopy 运行时,它失败并显示以下错误消息:

ERROR 87 (0x00000057) Copying File [source dir]\test2.xlsm 参数不正确

我曾尝试映射驱动器并在 samme 用户帐户下运行 RoboCopy 命令,但似乎并没有解决问题。

希望有人能帮忙。

任何帮助将不胜感激。

小智 0

执行复制时,您有权创建文件,但无权覆盖它们。文件有多大?根据我收集的信息,每次编辑文件时,文件都会被完整复制,然后用新版本覆盖旧文件。没有办法评估文件中发生了什么变化并只附加新数据吗?由于您没有尝试附加数据,并且您使用的工具不允许您覆盖文件,因此理论上您可以编写某种类型的中间脚本,在复制新文件之前检测到过期文件时将其删除。这听起来像是一个笨拙的解决方案,但整个事情听起来也像是一个笨拙的过程。就我个人而言,我会重新评估这里的目标是什么等等,但我试图坚持只回答这个问题。祝你好运!