#windows #batch-file #cmd #sftp #winscp
Вопрос:
Я хочу отслеживать наш 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:UsersAdministrateurDesktopxx" "/x/x/rx" (
ECHO nouveau fichier ajouter au repertoir
)
else (ECHO aucun nouveau fichier exit
)
Вот в чем ошибка:
Commande inconnue 'if'.
Ответ №1:
- Добавьте
-preview
переключатель в своюsynchronize
команду, чтобы она проверяла только наличие изменений, вместо фактической синхронизации файлов. - Добавьте
option failonnomatch on
в свой сценарий, чтобыsynchronize
команда сообщала об отсутствии различий как об ошибке.option failonnomatch on synchronize -preview local "C:UsersAdministrateurDesktopxx" "/x/x/rx"
- В фактическом пакетном файле проверьте код выхода WinSCP, чтобы определить, есть ли какие-либо различия или нет. Что-то вроде этого:
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 )
Если вы хотите отправить электронное письмо, см. Руководство WinSCP по отправке результатов сценария по электронной почте.