0

VB.NET 2.0 でコードを書いており、FTP -s:filename コマンドを使用して FTP のバッチ コマンドを実行したいと考えています。

FTPアップロード用のバッチファイルFTP.TXTがあります。次のステートメントがあります。

OPEN <FPT SERVER IP>
USERNAME
PASSWORD
ASC
CD FOLDERNAME
PUT D:\DRFT000009.TXT FTPDRFTIN.DRFT000009
BYE

バッチ ファイルのファイル名を動的に変更する必要があります。これで、実行時にバッチ ファイルを作成して読み取るか、Process オブジェクトの入力ストリームを設定するコードを取得できます。しかし、それは期待どおりに機能していません。

このコードは正常に実行されますが、ここではコンピューターから静的バッチ ファイル FTP.TXT を読み取ります。

Public Sub FTP4()
    Dim psi As ProcessStartInfo
    Dim totalerror As String = ""
        psi = New ProcessStartInfo()
        psi.FileName = "FTP.EXE"
        psi.Arguments = " -s:D:\FTP.TXT"
        psi.RedirectStandardError = True
        psi.RedirectStandardOutput = True
        psi.CreateNoWindow = True
        psi.WindowStyle = ProcessWindowStyle.Hidden
        psi.UseShellExecute = False

        Dim process As Process = process.Start(psi)
        Dim error2 As String = process.StandardError.ReadToEnd()
        totalerror = totalerror & error2
        process.WaitForExit()


        Response.Write(totalerror)

End Sub

しかし、リクエストごとにカスタムファイル名でFTPを何とかしたいと思っています。これは私が試したもので、動作していません:

Public Sub FTP5()
    Dim totalerror As String = ""
    Dim BatchScriptLines(6) As String

    Dim process As New Process
    process.StartInfo.FileName = "FTP.EXE"
    process.StartInfo.UseShellExecute = False
    process.StartInfo.CreateNoWindow = True
    process.StartInfo.RedirectStandardInput = True
    process.StartInfo.RedirectStandardOutput = True
    process.StartInfo.RedirectStandardError = True
    process.Start()
    process.BeginOutputReadLine()
    Using InputStream As System.IO.StreamWriter = process.StandardInput
        InputStream.AutoFlush = True
        BatchScriptLines(0) = "OPEN <FPT IP ADDRESS>"
        BatchScriptLines(1) = "USERNAME"
        BatchScriptLines(2) = "PASSWORD"
        BatchScriptLines(3) = "ASC"
        BatchScriptLines(4) = "CD SFCD40DAT"
        BatchScriptLines(5) = "PUT D:\DRFT000006.TXT FTPDRFTIN.DRFT000006"
        BatchScriptLines(6) = "BYE"
        For Each ScriptLine As String In BatchScriptLines
            InputStream.Write(ScriptLine & vbCrLf)
        Next
    End Using

    Dim error2 As String = process.StandardError.ReadToEnd()
    totalerror = totalerror & error2
    process.WaitForExit()


    Response.Write(totalerror)

End Sub

この場合、「FTP -s:filename」コマンドを実行する方法を教えてください。基本的に、私ができない単一行のバッチファイルの実行に似た何かをしたいです。

4

1 に答える 1