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 Success単に置き換えるだけです。rm abc.dat

別のオプションは、すべてのロジックを外部バッチ ファイルで実行することです。PSFTPscript_get.txt と script_rm.txt のような2 つのスクリプトを記述し、ファイルが存在する場合にのみ 2 つ目のスクリプトを呼び出します (上記のように)。

これらのソリューションのどちらも、エラー状態をキャプチャしないという点で技術的にあなたの質問に答えていないことは知っていますPSFTPが、うまくいけば、それは許容できる回避策です。

于 2015-12-31T18:27:09.650 に答える