2017-03-18 15 views
1

いくつかのコードを書いていますが、動作していないのでどうすればいいのか教えてください。VBScriptを使用してSFTPフォルダからファイルを削除したい

Function SFTPDelete(SFtpServerName, SFtpUser, SFtpPassword, LocalFolderPath, SFTPOutFolderPath) 
    On Error Resume Next 
    Dim mydate, mmddyyyy, sFTPScript, rc 
    Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject") 
    Set oFTPScriptShell = CreateObject("WScript.Shell") 
    rc = micPass 
    mydate = Date - 1 
' mmddyyyy = Right("00" & Month(mydate),2) &"-"& Right("00" & Day(mydate),2) & "-" & CStr(Year(mydate)) 

    sFTPScript = sFTPScript & "option batch on" & vbCrLF 
    sFTPScript = sFTPScript & "option confirm off"& vbCrLf 
    sFTPScript = sFTPScript & "option transfer binary" & vbCrLf 
    sFTPScript = sFTPScript & "open sftp://" & SFtpUser & ":" & SFtpPassword & "@" & SFtpServerName & vbCrLf 
    sFTPScript = sFTPScript & "cd " & SFTPOutFolderPath & vbCrLf 
    sFTPScript = sFTPScript & "delete" & SFTPOutFolderPath & vbCRLf 
    sFTPScript = sFTPScript & "close" & vbCrLf 
    sFTPScript = sFTPScript & "exit" & vbCrLf 

    sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%") 
    sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName 

    'Write the input file for the sftp command to a temporary file. 
    Set oFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True) 
    oFTPScript.WriteLine(sFTPScript) 
    oFTPScript.Close 
    Set oFTPScript = Nothing 

    sCmd = """C:\Program Files (x86)\WinSCP\winscp.exe"" /console /log=" & LocalFolderPath & "log_winscp_get_files.log /loglevel=1 -script=" & sFTPTempFile 
    oFTPScriptShell.Run sCmd 

    Wait 10 
    If Err.Number <> 0 Then 
     Reporter.ReportEvent micFail, "Error occured while delete file from FTP location ["& SFTPOutFolderPath&"] " 
     rc = micFail 
    Else 
     'oFTPScriptFSO.DeleteFile(LocalFolderPath&"log_winscp_get_files.log") 
    End If 

    ' Get rid of temp file used for input to sftp 
    oFTPScriptFSO.DeleteFile(sFTPTempFile) 

    Set oFTPScriptFSO = Nothing 
    Set oFTPScriptShell = Nothing 
    SFTPDownload = rc 
End Function 

どうすればいいか教えてください。

+0

VBScriptをデバッグするための最初の手順:「On Error Resume Next」を削除し、実際に何がうまくいかないかを確認します。次に、あなたのコードが「うまくいかない」方法を説明してください。あなたはそれが何をすると思いますか?それは実際に何をしていますか?どのようなエラーが発生しますか? –

+0

「働いていない」とはどういう意味ですか?それは何をするためのものか?ログファイルは作成されていますか?それは何を示していますか? –

答えて

1

あなたの質問はかなり曖昧です。

しかし、少なくとも二つの明らかな問題があります。

  • はWinSCPのにはdeleteコマンドはありません。 rm commandがあります。
  • deleteコマンドの後に空白がありません(rmコマンドである必要があります)。
  • rm/deleteコマンドのパスはcdコマンドと重複しており、実際にはフォルダ自体が削除されます。あなたは-hostkey switch in the open commandverify server hostkeyに含まれていない

    sFTPScript = sFTPScript & "rm *" & vbCRLf 
    
  • :あなたはフォルダ内のファイルのみを削除したい場合は、単に*マスクを使用します。

+0

実際に私はSFTPディレクトリからファイルを削除しようとしています。そのディレクトリに接続できますが、不明なコマンド 'Remove/ESB/UAT/ClaimApplicatie/Out/*'に対してunknownコマンドのようなエラーが発生しています。削除すると同じエラーが発生します。 – sreehari

+0

ファイルを削除しようとしていることがわかりました。なぜあなたはそれを繰り返すのですか?私の答えが矛盾する印象を持っていますか?とにかく、あなたにはスペースもありません。私の編集された答えを見てください。 –

+0

こんにちはMartin Prikry、あなたの貴重な解決策をありがとうございます。私はあなたがその時にSFTPサーバーで利用可能なアウトフォルダーを提供したコマンドを使用して同じスクリプトを実行すると、そのフォルダーも削除されました。それらのフォルダで使用可能なファイルは削除する必要があります。私はそれをどうやって行うことができるかお勧めします。 – sreehari

関連する問題