• ベストアンサー

外部ファイルを実行するには?

お世話になります。 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

質問者が選んだベストアンサー

  • ベストアンサー
noname#246547
noname#246547
回答No.1

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
armstrong-us
質問者

お礼

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

その他の回答 (1)

  • KG_
  • ベストアンサー率62% (34/54)
回答No.2

バッチファイルの1行目に cd /d C:\text を追加してから、もう一度VB6から呼び出してください。 これで作成されるなら。実行するカレントディレクトリが違うんじゃないかなと思います。

armstrong-us
質問者

お礼

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

関連するQ&A