Windows CMD - 等待文件完成复制然后运行命令


0

我试图在检测到文件更改后运行命令..我的问题是我创建的程序在创建文件但未完全复制时立即执行。

现在我已经timeout /t 180 /nobreak在我的脚本之前使用了暂时修复它,然后让它运行我想要的命令,但这不适用于我做的每个文件,有些将花费超过180秒。

我想要完成的是将视频文件通过本地网络传输到共享文件夹,从那里带有共享文件夹的PC检测到文件更改/创建,然后等待文件完全传输然后运行.bat / .cmd

有没有办法做到这一点。任何帮助是极大的赞赏。谢谢!

Answers:


0

你应该从另一个角度来看待它。

复制文件的脚本将知道传输何时完成,并且可以确定下一个操作应该开始的时间。

因此,您希望从同一脚本执行这两个操作。

这为您提供了两个选项:

远程执行

程序PSExec(可以从microsoft下载)可以在目标计算机上执行程序,如果它以足够的权限启动的话。复制完成后,它可用于在远程计算机上启动程序。

反向复制

您当前正在从源复制到目标。如果您从源共享文件所在的文件夹,则也可以在目标端启动该文件。


我过去使用过PSExec,非常有用。我试图避免使用从发送端到网络文件夹的程序,因为它将是多台PC进行传输。我将在一台PC上试用PSExec并进行测试。谢谢你的建议。
约翰他

0

您可以使用文件传输syncthing在主模式(单程同步)。在传输文件时,它会创建临时文件,并且只有在成功时才将其重命名为实际文件名。如果您的监控程序将监视特定文件的扩展名,它将在传输完成后选择它,以便您可以立即运行下一个任务。使用torrent兼容程序(仅限于本地网络)可以完成类似的操作,其中实际文件仅显示已完成的传输。

PS Syncthing默认情况下在预设时间窗口同步,但如果您需要立即转移,则可以使用其调用的伴随程序syncthing-inotify,这样在源位置更改/创建/删除的任何内容都将立即复制到目标PC上。


我会尝试同步,谢谢Alex的建议。我瞥了一眼网站,那个程序让我想起了bittorent同步。我现在正在移动,但我会尝试这个。
约翰他

@JohnHim是的它类似于bitorrent-sync,但相比之下它是开源的,允许运行自己的发现并依赖服务器或直接p2p连接,得到很好的支持,它几乎可以在任何设备和平台上运行
Alex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.