0

我正在使用 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

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

4

1 回答 1

1

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

命令: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 Successrm abc.dat或您想要发生的任何事情。

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

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

于 2015-12-31T18:27:09.650 回答