プロが教える店舗&オフィスのセキュリティ対策術

下のbatファイルをDosプロンプトから起動した場合は
resulf.logに230 User zerokara logged in.と出力されますが、
これをVBからWshShellオブジェクトのExecメソッドで起動しますと
resulf.logにftpの応答メッセージ(230 User zerokara logged in.など)が
出力されませんのでfindできずエラーを返してしまいます。
よろしければ、この現象の意味とWshから起動した場合にresulf.logに
ftpの応答メッセージを出力する方法を教えてください。
宜しくお願いします。


test1.bat
ftp -s:C:\VB\ftp_test.scr >resulf.log
type resulf.log | find /i "230"
IF NOT %ERRORLEVEL% == 0 GOTO ERROR
copy 命令

A 回答 (3件)

>Set we = ws.Exec("cmd.exe /c D:\VB\test.bat > test.log")



見落としてました(^^;
Exec使ってたんですね。
でしたら標準出力への出力結果はファイルには出ません。
Execメソッドの戻り値であるWshScriptExecのStdOutプロパティからアクセスすることになります。

ファイルに出力されるのを希望されるんでしたら、Execではなく、Runメソッドを使用してください。こちらでも終了待てますんで。
    • good
    • 0
この回答へのお礼

Runメソッドを使用しましたら上手くいきました。
色々勉強になりました。有難う御座いました。

お礼日時:2005/05/23 19:06

>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.

補足日時:2005/05/23 17:32
    • good
    • 0

"cmd.exe /c test1.bat"



のようにして起動してみてください。
リダイレクトはcmd.exeやcommand.comの機能です。
    • good
    • 0
この回答へのお礼

お世話になります。
早速の回答有難うございます。
言われました通りに起動してみましたが、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

お礼日時:2005/05/23 15:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています