如何检查PSFTP进程是否与批处理文件一起返回0

时间:2014-02-19 19:09:03

标签: windows batch-file putty return-code

我正在编写一个批处理脚本,其中包含从目录中获取文件并使用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以结束脚本并将错误消息回送到日志中。

我看到的问题是,一旦上面的行运行,批处理脚本如果不参与。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

检查psftp是否设置了错误代码

在函数运行后立即检查%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%