【问题标题】:Is there a way to check for return code using PSFTP?有没有办法使用 PSFTP 检查返回码?
【发布时间】:2016-04-04 04:42:38
【问题描述】:

我正在使用 Windows BATCH 创建一个脚本文件,然后使用 PSFTP 调用它(使用命令行中的 Putty 调用 TransferScript.txt)。

要求是从 Unix 框获取一个文件到 windows,然后从 Unix 中删除它,但在得到返回 0 之后。我的代码如下所示:

TransferScript.txt

lcd E:\Temp 
cd /sap/xx/yy 
get abc.dat 
IF %ERRORLEVEL% EQ 0
rm abc.dat
quit

这不起作用,但是文件被复制但没有被删除。任何人都可以帮忙吗?

【问题讨论】:

    标签: batch-file psftp


    【解决方案1】:

    文件的命令处理器是psftp,而不是cmd.exe。因此,IF 不是可识别的命令。但是,您可以使用 ! PSFTP 命令将命令传递给 Windows。这是documented here。这是一个经过测试的工作版本:

    命令:psftp -b script.txt username@ftpserver.com -pw password

    #script.txt
    !echo Connected. Getting file...
    lcd c:\temp 
    cd sap/xx/yy
    get abc.dat
    !IF EXIST c:\temp\abc.dat echo Success
    !IF NOT EXIST c:\temp\abc.dat echo Failure
    quit
    

    只需将echo Success 替换为rm abc.dat 或如果文件存在于本地文件系统上,则替换为任何您想要的。

    另一种选择是在外部批处理文件中执行所有逻辑。编写 2 个PSFTP 脚本,如 script_get.txt 和 script_rm.txt,仅在文件存在时调用第二个(如上)。

    我知道这些解决方案都没有从技术上回答您的问题,因为它们不会从 PSFTP 捕获错误状态,但希望这是一个可接受的解决方法。

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 1970-01-01
      • 2013-07-02
      • 2011-08-29
      • 1970-01-01
      • 2021-10-02
      • 2011-10-12
      • 1970-01-01
      • 2016-01-09
      相关资源
      最近更新 更多