重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。

vb6で外部のバッチファイルを起動して、それを動作させようとしているのですが、うまくいきません。特にエラーにはならず、一瞬DOSプロントは立ち上がるんですが、バッチ処理しているログにはなにも書き込まれません。普通にバッチファイルをダブルクリックさせるか、コマンドからバッチファイルの入っているフォルダまでいって、バッチファイルを実行すれば書き込まれるのですが。
どこがまちがっているのでしょうか?shellじゃなくて、違う関数を使わなければいけないのでしょうか?ご教授よろしくお願いします。
なお、vb6でテストするときは▸マークの実行を押して、テストしました。

サンプル用のものです。
↓test 現在の時間をログに記入
■バッチファイルの中身(test.bat)
echo test >> log.txt
time/t >> log.txt

■vb6のファイルの中身
Private Sub Command1_Click()

Dim ret as long
ret = shell("cmd.exe /c C:\test\test.bat",4)

End Sub

A 回答 (2件)

バッチファイルの1行目に



cd /d C:\text

を追加してから、もう一度VB6から呼び出してください。
これで作成されるなら。実行するカレントディレクトリが違うんじゃないかなと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

遅くなってしまいましたが、残念ながら出来ませんでした。
またなにかありましたらよろしくお願いします。

お礼日時:2007/05/21 23:59

cmd.exeの標準出力がVBにリダイレクトされているから、


log.txtにはリダイレクトされないんじゃない?

ためしに、log.txtにリダイレクトせず、echoで5000バイトぐらい出力したらどうなりますかね?(具体的には、test.bat内に「echo aaaaaaa~100文字分」を50行書く)もちろんshell関数から呼び出してね!
DOSプロンプトに文字列がいっぱい表示されますかね?
表示されないと思うけどな。

ちょっと前に、VBScriptですが、似たような問題がありましたよ。
WScript.ShellのExec関数でしたけど、まぁ一緒じゃないかな?
参考URLのANo.3&ANo.2参照。

参考URL:http://okwave.jp/qa2947277.html
    • good
    • 0
この回答へのお礼

遅くなってしまいすみません。

なんとか別の方法で解決することが出来ました。
また質問する機会があると思いますが、よろしくお願いします。

お礼日時:2007/05/21 23:58

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