我正在尝试编写一个简单的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]...
有人可以帮忙吗?提前致谢
答案 0 :(得分:2)
您的%errorlevel%
变量已获得delayed expansion problem。
使用setlocal enabledelayedexpansion
启用延迟展开并在代码块中使用!errorlevel!
,或使用其他语法:
if errorlevel 1 (...
检查errorlevel
是否为1 或更高。 (有关说明,请参阅if /?
)