Batch file 为什么%errorlevel%返回0,甚至psftp也返回访问被拒绝或处理时出错

Batch file 为什么%errorlevel%返回0,甚至psftp也返回访问被拒绝或处理时出错,batch-file,Batch File,我正在尝试使用批处理文件运行psftp,但是如果psftp中有错误,它总是返回errorlevel 0 @ECHO off ECHO Executing as user: %USERNAME% cd "D:\program files\" D: SET error_level=0 psftp command.... SET error_level=%errorlevel% 我已经解决了我的问题。当我将psftp命令放在If条件中时,errorlevel无法识别它。(我也不知道为什么

我正在尝试使用批处理文件运行psftp,但是如果psftp中有错误,它总是返回errorlevel 0

@ECHO off
ECHO Executing as user: %USERNAME%

cd "D:\program files\"

D:

SET error_level=0

psftp command....

SET error_level=%errorlevel% 

我已经解决了我的问题。当我将psftp命令放在If条件中时,errorlevel无法识别它。(我也不知道为什么)。。。所以我做的是创建了一个GOTO语句

在If条件中,我将GOTO语句放在那里并调用psftp命令

@Echo Off
If Exist C:\Program ( GOTO DOPROCESS )

:DOPROCESS
psftp command----

很可能是因为
psftp
返回一个0的退出代码,即使它输出了一个错误。然后你就掉进了著名的“延迟扩展陷阱”。请看这里:您没有得到答案的原因是您的示例没有使用循环/括号。如果您展示了实际的代码,这里的几十位响应者本可以帮助您。只是给未来的一点提示。