2015-12-30 83 views
0

我正在使用windows BATCH创建一个脚本文件,然后使用PSFTP(使用Putty从命令行调用TransferScript.txt)调用它。有没有办法使用PSFTP检查返回代码?

的要求是得到从Unix框中输入文件到windows,然后从Unix,但得到的回报0.我的代码看起来像它删除后:

TransferScript.txt

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

这并未不工作,但是文件正在被复制,但没有被删除。谁能帮忙?

回答

1

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

命令:psftp -b script.txt [email protected] -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 

只需使用任何你想要的,如果该文件的本地文件系统上存在发生rm abc.dat或更换echo Success

另一种办法是做所有的逻辑在外部批处理文件。写2 PSFTP脚本,如script_get.txt和script_rm.txt,只有当文件存在时才调用第二个脚本(如上所述)。

我既不知道这些解决方案在技术上回答你的问题,他们不从PSFTP捕获错误状态,但希望它是一个可以接受的解决办法。

相关问题