WinScp - 难以处理错误值

WinScp - Difficulty with handling error values

我正在尝试编写一个简单的 winscp 脚本以在批处理文件中的 for 循环中使用它。循环是:

for /F "tokens=2 delims==" %%s in ('set REMOTE_PATH[') do ("    
ECHO CHECKING FOR %%s
winscp.exe /console /script=run01test1 /parameter // %%s
IF  %ERRORLEVEL% neq 0 (
    ECHO FILE %%s DOES NOT EXIST
    CALL:error10 "76" "UNABLE TO LOCATE TARGET FILE %%s "
    CALL:ERRORNOTIFYMAIL "UNABLE TO LOCATE TARGET FILE %%s" "FATAL" "CHECK EXISTENCE OF TARGET DIRECTORY" "77"
    EXIT /B 10
) ELSE (
ECHO FILE %%s EXISTS
)
ECHO.   
)

run01test1 winscp 脚本是:

open sftp://xxx:xxx@xx.xx.xx.xx
stat "%1%"
exit

我的问题是,它要么没有正确传递参数,要么由于某种原因,无论命令 stat 是否成功,return 值总是 return 为零。作为记录,想法是检查文件是否存在,文件以 :

的样式存储在数组中
set remote_path[0]
set remote_path[1]...

有人可以帮忙吗?提前致谢

你有一个 和你的 %errorlevel% 变量。

使用 setlocal enabledelayedexpansion 启用延迟扩展并在代码块中使用 !errorlevel!,或者使用替代语法:

if errorlevel 1 (...

检查 errorlevel 是否为 1 或更高 。 (有关说明,请参阅 if /?