使用 WinSCP 和批处理监视 SFTP 服务器上的更改

Monitoring changes on SFTP server with WinSCP and batch

我想监控我们的 SFTP,以便在添加文件时向我们发送电子邮件。现在我尝试用批处理脚本用 if/else 设置条件,但批处理环境不接受我的条件。

我是批处理和自动化方面的新手,所以我尝试做的是首先将 SFTP 文件与本地文件同步,然后 运行 批处理计划再次尝试同步;如果是,那么它将发送一封电子邮件(我现在没有为电子邮件制作脚本,老实说,我现在不知道该怎么做),如果它没有同步,那么退出脚本。

这是我的脚本:

option batch on
option confirm off
open sftp://x@sftp.x/ -privatekey=privateKey.ppk -hostkey="ssh-rsa 2048 x"
option transfer binary
if synchronize local "C:\Users\Administrateur\Desktop\x\x" "/x/x/rx" (
ECHO nouveau fichier ajouter au repertoir
)
else (ECHO aucun nouveau fichier exit
)

这是错误:

Commande inconnue 'if'.
  • 添加 -preview switch to your synchronize command 使其仅检查更改,而不是实际同步文件。

  • option failonnomatch on 添加到您的脚本中,使 synchronize 命令将无差异报告为错误。

    option failonnomatch on
    synchronize -preview local "C:\Users\Administrateur\Desktop\x\x" "/x/x/rx"
    
  • 在实际批处理文件中,check WinSCP exit code判断是否有差异。像这样:

    winscp.com /script=script.txt /log=script.log
    if errorlevel 1 (
      echo Nothing to synchronize or other problem
    ) else (
      echo There are files to synchronize
    )
    

    如果要发送电子邮件,请参阅 Emailing script results 的 WinSCP 指南。