質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

242閲覧

バッチファイルでファイルを起動する際の挙動&理由について

u_zu

総合スコア52

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2024/10/12 20:44

実現したいこと

バッチファイルでACCESSファイルを起動させようとしています。起動はできるのですが、挙動についての違いが分からないので質問します。また、その際の書き方についての質問もあります。

前提

質問1
何故、②では ①や③のようにTest.accdbが開かないのでしょうか?
"MSACCESS.EXE" はPathは通っていませんが、レジストリに記載されているので問題ない、とネットで検索したら書いてありました。

質問2
③ではMSACCESS.EXEを指定しておらず、ファイル名だけです。
これは拡張子accdbがMSACCESSと関連付けが行われていて、MSACCESSのPathが通っているから①と同じような処理が行われる、という理解でよろしいのでしょうか?

発生している問題・エラーメッセージ

ソースコードに書いた、①ではきちんとTest.accdbは開きます。

②では コマンドプロンプトの画面?が一瞬だけ開いて瞬時に消えます。
ACCESSも起動せず、Test.accdbも開きません。

③は ①と同様です。

該当のソースコード

@echo off "C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" "C:\Users\u_zu\Test.accdb" ・・・① "MSACCESS.EXE" "C:\Users\u_zu\Test.accdb" ・・・② "C:\Users\u_zu\Test.accdb" ・・・③

試したこと

②について
START "" "MSACCESS.EXE" "C:\Users\u_zu\Test.accdb"

と記述したら①や③と同じような挙動になったのですが、理由がわかりません。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

コマンドプロンプトやPowerShellから、あるいは何らかのプログラミング言語からAPIでプログラムを起動するのは、PATHが通っているか、フルパスで指定するかの必要があります。

Win+R で開く「ファイル名を指定して実行」ダイアログや、コマンドプロンプトでもstartを前置した場合は、PATHに無くてもレジストリーを見てそこに書いてあればフルパスが書いてあるのでそれをみて起動します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathsの下にMSACCESS.EXEのキーがあるはずです。
もしかするとHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathsの下。

拡張子関連付けは、「この拡張子のファイルを開くにはこのコマンドラインで」と登録されていますが、コマンドの部分はプログラムのフルパスで登録されています。

ということで、バッチファイルから起動したいのなら、
・フルパスで
・環境変数PATHC:\Program Files\Microsoft Office\root\Office16を追加して
start
・拡張子関連付けで
のどれかです。

投稿2024/10/13 03:31

編集2024/10/13 13:29
otn

総合スコア85654

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2024/10/13 04:01

あと、 > ②では コマンドプロンプトの画面?が一瞬だけ開いて瞬時に消えます。 ということは、BATファイルをExplorerからダブルクリックで起動しているのだと思いますが、 それはBATファイルが完成してエラーがなくなってからの起動方法です。 完成するまでは、エラーメッセージなどを見るために、コマンドプロンプトからBATファイル名を入力して起動します。 デバッグ中は、echo off も削除した方が良いことが多いです。
u_zu

2024/10/13 06:57 編集

どうもありがとうございます。理解出来ました。echo offについてもありがとうございます。
guest

0

あらかじめコマンドプロンプトを起動しておいて、そのうえで実行してみたらエラーメッセージが見れます
そうすれば、なぜダメなのかその理由が表示されますよ

投稿2024/10/12 23:03

y_waiwai

総合スコア88000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_zu

2024/10/13 06:55

どうもありがとうございます。 '"MSACCESS.EXE"' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 とメッセージがでました。Pathが通っていないとダメなんですね。
y_waiwai

2024/10/13 09:08

> Pathが通っていないとダメなんですね。 そういうことですねー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問