我正在编写一个批处理脚本,其中包含从目录中获取文件并使用psftp远程复制它们。
以下是完成所有魔术的行:
echo n | psftp.exe user@hostname.com -i id_rsa.ppk -v -b psftp-rules.txt -bc >> c:\log-file.txt
如您所见,psftp.exe
被调用并通过rsa密钥进行身份验证。推送发生在psftp-rules.txt
,活动记录在log-file.txt
。
我需要的是一个检查返回码的函数,如果有任何失败,将错误写入日志文件然后退出。
我正在寻找的可能是为此返回代码设置一个变量。然后我想象一个if语句,它是变量等于1以结束脚本并将错误消息回送到日志中。
我看到的问题是,一旦上面的行运行,批处理脚本如果不参与。任何帮助将不胜感激。
答案 0 :(得分:1)
在函数运行后立即检查%ErrorLevel%
的值。在成功的工作流和失败工作流中运行此操作,以验证ErrorLevel是否在失败时设置。
echo %ErrorLevel%
echo n | psftp.exe user@hostname.com -i id_rsa.ppk -v -b psftp-rules.txt -bc >> c:\log-file.txt
echo %ErrorLevel%
将ErrorLevel存储在变量中并进行评估
echo n | ...
set "ExitCode=%ErrorLevel%"
if "%ExitCode%"=="1" echo This is my error message for error 1 > c:\log-file.txt & exit /b %ExitCode%
如果要捕获所有正的ErrorLevels并回显相同的消息,请使用以下if语句。
echo n | ...
if ErrorLevel 1 echo This is my error message for error 1+ > c:\log-file.txt & exit /b %ErrorLevel%