检查sftp批处理文件

时间:2015-09-02 19:03:26

标签: windows batch-file

我有一个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文件中实现此文件扩展名检查条件。

1 个答案:

答案 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)
)

退出代码:

  • 0:已下载CSV
  • 1:CSV和TXT都不存在
  • 2:TXT已下载

有关命令行参数的更多信息:official docs