我有一个bat文件,用于检查sftp位置的.csv文件。
如果sftp服务器上存在csv文件,则它会在本地成功下载文件并以0退出。
如果.csv文件不存在,则bat文件将以退出状态1完成处理。
我在下面的bat文件中使用sftp:
echo open sftp://<username>:<password><server_name> -hostkey="<server host key>" >> ftpcmd.dat
echo get /shared/sftp/test.csv >> ftpcmd.dat
echo exit >> ftpcmd.dat
D:\Winscp\winscp.com /script=ftpcmd.dat
del ftpcmd.dat
问题 -
我需要在同一个脚本中检查文件扩展名,作为要求的一部分。如果在sftp服务器位置,存在具有其他扩展名的文件,则sftp脚本将失败或以某种状态退出。
目前的行为 - 如果sftp位置中存在.txt文件,则批处理文件将以状态1退出。我需要以其他退出状态退出此条件。
请建议如何在sftp文件的同一个bat文件中实现此文件扩展名检查条件。
答案 0 :(得分:0)
直接/简单的方法是在没有.txt
时另外检查.csv
,如果成功,则将退出代码设置为2:
for %%a in (csv txt) do (
winscp.com /command ^
"open sftp://<username>:<password><server_name> -hostkey=""<server host key>""" ^
"get /shared/sftp/test.%%a" ^
"exit"
if "%errorlevel%" equ 0 if %%a==csv (exit /b 0) else (exit /b 2)
)
退出代码:
有关命令行参数的更多信息:official docs。