- ベストアンサー
外部ファイルを実行するには?
お世話になります。 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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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参照。
その他の回答 (1)
- KG_
- ベストアンサー率62% (34/54)
バッチファイルの1行目に cd /d C:\text を追加してから、もう一度VB6から呼び出してください。 これで作成されるなら。実行するカレントディレクトリが違うんじゃないかなと思います。
お礼
ご回答ありがとうございます。 遅くなってしまいましたが、残念ながら出来ませんでした。 またなにかありましたらよろしくお願いします。
お礼
遅くなってしまいすみません。 なんとか別の方法で解決することが出来ました。 また質問する機会があると思いますが、よろしくお願いします。