WinScp - 处理错误值时遇到困难

时间:2017-01-26 07:30:34

标签: file batch-file cmd winscp

我正在尝试编写一个简单的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是否成功,返回值总是返回零。为了记录,我们的想法是检查文件是否存在,文件以以下样式存储在数组中:

set remote_path[0]
set remote_path[1]...

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

1 个答案:

答案 0 :(得分:2)

您的%errorlevel%变量已获得delayed expansion problem

使用setlocal enabledelayedexpansion启用延迟展开并在代码块中使用!errorlevel!,或使用其他语法:

if errorlevel 1 (...

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