- ベストアンサー
WshShellから起動したbat(ftp)の応答メッセージを取得するには
- WshShellから起動したバッチファイル(ftp)の応答メッセージの取得方法について教えてください。
- バッチファイルを実行すると、resulf.logには応答メッセージが表示されない現象が発生しています。
- VBからWshShellオブジェクトのExecメソッドでバッチファイルを実行した場合に、応答メッセージを取得する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Set we = ws.Exec("cmd.exe /c D:\VB\test.bat > test.log") 見落としてました(^^; Exec使ってたんですね。 でしたら標準出力への出力結果はファイルには出ません。 Execメソッドの戻り値であるWshScriptExecのStdOutプロパティからアクセスすることになります。 ファイルに出力されるのを希望されるんでしたら、Execではなく、Runメソッドを使用してください。こちらでも終了待てますんで。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>Set we = ws.Exec("cmd.exe /c D:\VB\test.bat > test.log") test.logにパスが指定されてませんが平気ですか? どこに出力されるはずかわかってます?フルパス指定して確かめてみてください。
補足
taka_tetsuさん、レス有難う御座います。 おっしゃるとおりにフルパスにして試してみましたが、 結果は同じでした。 DOSプロンプトからbatファイルを起動するとresulf.log に以下の内容が取得できるのですが(悩) 200 PORT command successful. 150 Opening ASCII mode data connection 226 Transfer complete. ftp: 93868 bytes sent in 0.03Seconds 3128.93Kbytes/sec.
- taka_tetsu
- ベストアンサー率65% (1020/1553)
"cmd.exe /c test1.bat" のようにして起動してみてください。 リダイレクトはcmd.exeやcommand.comの機能です。
お礼
お世話になります。 早速の回答有難うございます。 言われました通りに起動してみましたが、resulf.log にftpの応答メッセージは取れませんでした。 Set ws = New WshShell Set we = ws.Exec("cmd.exe /c D:\VB\test.bat > test.log") Do While we.Status = 0 Sleep 100 Loop
お礼
Runメソッドを使用しましたら上手くいきました。 色々勉強になりました。有難う御座いました。