- PR -

バッチファイルの起動について

投稿者投稿内容
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-12-03 22:18
こんばんは。

今回はバッチファイルの起動について質問です。

「C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE" "C:\XXXX\BAT\KhssnIF.mdb" /CMD 01」

といった内容のバッチで引数「01」を.mdbファイルに渡し
起動させるといったものです。

「Shell」はEXEファイルのみ有効と考えております。
(見たり聞いたりの情報ですが)

よって、「Prcess」を使おうと思うのですが
BETファイルは動くのでしょうか?

直接mdbファイルを「Prcess」で起動しても良いかとは思うのですが、
引数は渡すことができるのしょうか?

ご存知の方宜しくお願い致します。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-12-04 11:15
こんにちは。。

前のスレッドをみて、説明不足だったこと感じ書き直します。

ASP.NETでバッチファイルを起動したいです。
(WINDOWS2000Pro)

バッチファイルの内容は
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "C:\XXXX\BAT\KhssnIF.mdb" /CMD 01

といった内容のバッチで引数「01」をKhssnIF.mdbファイルに渡し
起動させるといったものです。

Dim myprocess As New Process
myprocess.StartInfo.FileName = "C:\XXXX\BAT\KhssnIF(01).bat"
myprocess.Start()

とやってみたものの、PGを起動したところmdbファイルを開くことができなくなりました。
(システムエラーまたはメモリ不足のため)

あと、mdbファイルを直接引数を渡し、起動することも試みました。
Dim intSCatch As String
intSCatch = Shell("CMD /01""Start C:\XXXX\BAT\KhssnIF.mdb""")

とか
Dim intSCatch As String
intSCatch = Shell("C:\Program Files\Microsoft Office\Office\MSACCESS.EXE""C:\XXXX\BAT\KhssnIF.mdb""/CMD 01")

いろいろやってみたものの、惨敗です。
ご存知の方宜しくお願い致します。
二天
ベテラン
会議室デビュー日: 2001/09/26
投稿数: 60
投稿日時: 2003-12-04 11:45
Process.StartInfo.Argumentsプロパティを試してみて下さい。
ちなみに、ランチャーを開発したことがありますが、その時にexeもbatファイルもProcessで起動しています。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-12-04 11:59
二天さん、早速の返事ありがとうございます。

Process.StartInfo.Argumentsというのは引数を渡すものですよね?
ていうこうとは
Dim myprocess As New Process
myprocess.StartInfo.FileName = "C:\XXXX\BAT\KhssnIF.mdb"
myprocess.StartInfo.Arguments = "01"
myprocess.Start()

こんな感じで、mdbファイルに直接渡すことになると思います。
しかし、これを実行すると処理が終わらない状態になります。
(まるで永久ループのように)

何故?これで「システムエラーまたはメモリ不足のため」となると思われます。
ACCESSのPG側に変更が必要なのでしょうか?


batファイルを起動する際は、batファイルに引数を渡すPGがあるので
必要ないと思われますが。。。
二天
ベテラン
会議室デビュー日: 2001/09/26
投稿数: 60
投稿日時: 2003-12-04 12:36
> Process.StartInfo.Argumentsというのは引数を渡すものですよね?
> ていうこうとは
> Dim myprocess As New Process
> myprocess.StartInfo.FileName = "C:XXXXBATKhssnIF.mdb"
> myprocess.StartInfo.Arguments = "01"
> myprocess.Start()

> こんな感じで、mdbファイルに直接渡すことになると思います。
> しかし、これを実行すると処理が終わらない状態になります。
> (まるで永久ループのように)

> 何故?これで「システムエラーまたはメモリ不足のため」となると思われます。
> ACCESSのPG側に変更が必要なのでしょうか?

そもそもmdbファイルに引数を渡せるものなのでしょうか?
DOSプロンプトで試してみましたか?


> batファイルを起動する際は、batファイルに引数を渡すPGがあるので
> 必要ないと思われますが。。。

必要あるなしについてはわかりません。「batファイルに引数を渡して起動する」ことを質問しているのであると判断して回答したまでです。
# せっかく時間を割いて回答したのに損をしたという気持ちになりました。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2003-12-04 12:57
二天さん、すみません。

私は
「BATファイルで引数を渡して起動する」と書いたつもりです。
m(__)m

なので
> batファイルを起動する際は、batファイルに引数を渡すPGがあるので
> 必要ないと思われますが。。。
と書きました。

mdbファイルに引数を渡すと言う意味で以下のソースを書きましたが
(二天さんのアドバイスを受けて)

> Dim myprocess As New Process
> myprocess.StartInfo.FileName = "C:XXXXBATKhssnIF.mdb"
> myprocess.StartInfo.Arguments = "01"
> myprocess.Start()

これを実行すると処理が終わらない状態で困っているのですが。。。
(まるで永久ループのように)

mdbファイル(VBA)で変更する必要があるのか伺ったつもりです。

質問・表現の仕方が悪くてすみません。


[ メッセージ編集済み 編集者: みのる 編集日時 2003-12-04 12:59 ]

[ メッセージ編集済み 編集者: みのる 編集日時 2003-12-04 13:01 ]
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-12-04 13:04
みのるさん、こんにちは。

↓ここ見ました?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7874&forum=7&3
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-04 13:14
引用:

みのるさんの書き込み (2003-12-04 12:57) より:

mdbファイルに引数を渡すと言う意味で以下のソースを書きましたが
(二天さんのアドバイスを受けて)

> Dim myprocess As New Process
> myprocess.StartInfo.FileName = "C:XXXXBATKhssnIF.mdb"
> myprocess.StartInfo.Arguments = "01"
> myprocess.Start()

これを実行すると処理が終わらない状態で困っているのですが。。。


 mdbファイルって、Accessが作るファイルじゃないんですか?バッチファイルの拡張子はBATですよ。これ以外はダメ(Unixなら良いけど)。

 おそらく、WindowsはAccessにそのファイルを読ませようとしていると思われます。

スキルアップ/キャリアアップ(JOB@IT)