我已经使用 WinScp 同步了本地和远程文件,并使用 Windows 任务计划程序进行了计划,该计划每天执行一次脚本,如果远程文件是新的或更新的,则下载文件,否则不执行任何操作。
以下是脚本代码
option include data.csv
synchronize local d:\ /home/dir
但是现在我想要做的是,如果远程文件是新的,则在命令提示符上回显消息,并在本地目录中更新和下载。
其背后的想法是用户不必每天检查文件来查看是否有新的更新。
因此,他们将通过命令提示符上的此消息收到通知。
我应该在这个脚本中添加什么来检查文件的新版本是否已被下载并回显一些消息,否则不执行任何操作?
编辑:
现在我在这里-
我创建了一个批处理文件,其中包含如下代码:-
winscp.com /console /script=dwn_script.txt
@echo off
if errorlevel 1 goto error
echo The new version of data.csv file has been downloaded. Please check your local disk
:error
但是,当 winscp 显示“无需同步”时以及当 winscp 下载文件的新版本时,总是errorlevel
设置为。0
有人可以澄清一下哪个变量区分“无需同步”的状态和文件成功下载吗?
如果我发现这个差异,我可以将其放入if condition
并可以向用户显示新文件已下载的消息。
答案1
默认情况下,WinSCP 不会使用退出代码区分没有文件可同步的情况,因为它不认为这是一个错误。
您可以使用以下方式更改option failonnomatch
:
option failonnomatch on
或者更好的是,使用WinSCP .NET 程序集(例如通过 PowerShell 脚本)及其Session.SynchronizeDirectories
。