- ベストアンサー
コマンドプロンプトでの他端末アプリケーション起動について質問です。
コマンドプロンプトでの他端末アプリケーション起動について質問です。 (OS:WindowsXP) 以下の二つの方法でアプリケーションを起動した時に動作の違いが出るのはなぜでしょうか?是非教えて下さい。 【前提】 アプリケーションは起動時に同じ共有フォルダ内の設定ファイルを参照しています。 設定ファイルが存在しなければエラーポップアップを表示します。 ・エクスプローラ画面からサーバの共有フォルダにアクセスし、直接exeを叩いた場合 エラーも無く正常に起動する。 ・コマンドプロンプトでC:\Documents and Settings\○○> \\192.○○○.○○.○○\共有フォルダ\○○.exeを実行した場合 「設定ファイルが存在しません。」というエラーポップアップが表示され、アプリケーションが終了する。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
プログラム中で設定ファイルのファイルパスの指定方法の違いでは。 相対パスならどちらもOKでしょうが、パスを指定せずにファイル名のみでオープンしようとした場合、カレントフォルダが指定されたとみなします。 で、エクスプローラの場合は作業フォルダとしてプログラムと同じフォルダが指定されているのでカレントフォルダは同じなんですが、コマンドプロンプトの場合はそうは行かない。あくまでもカレントフォルダは「C:\Documents and Settings\○○」なので、ファイル名だけで開こうとするとエラーになる。 回避するには、ネットワークドライブに\\192.○○○.○○.○○\共有フォルダをマウントしてからカレントドライブ、カレントフォルダを変更してください。 ※\\192.○○○.○○.○○\共有フォルダへ直接にカレントフォルダを変更することはできません。ネットワークドライブとしてマウントする必要があります。 http://www.rimesene.co.jp/mesene/tips/contents/zd030.htm http://www.relief.jp/itnote/archives/002778.php
その他の回答 (3)
- Toshi0230
- ベストアンサー率51% (836/1635)
他の方の回答にもありますが、カレントディレクトリがプログラムの存在しているフォルダと異なるため、と考えて良いと思います。 プログラムと同じフォルダ内に設定ファイルが存在していることが前提のプログラムを質問にあるような起動方法で実行しようとすると同様のエラーになります。 回避するためには (1) フォルダをネットワークドライブにマウントして、カレントディレクトリを移してから実行する (2) プログラムに設定ファイルを指定するオプションがある場合は、オプションで設定ファイルを明示的に指定する などの方法が考えられます。
お礼
Toshi0230さんの意見である「(1) フォルダをネットワークドライブにマウントして、カレントディレクトリを移してから実行する」の方法でエラーを回避することが出来ました。 ありがとうございました!
- garaogu
- ベストアンサー率40% (67/166)
こんにちは 設定ファイルを読み込む時に、実行ファイルである自分自身がいるフォルダ名を付加していないのではないでしょうか? エクスプローラで実行する場合は、プログラム自身がいるフォルダがカレントフォルダになりますが、 コマンドプロンプトで実行した場合は、コマンドを実行したフォルダがカレントフォルダになります。 読み込む設定ファイル名に実行時のカレントフォルダ名を付けてみては、如何でしょう?
お礼
ありがとうございます! 参考にさせていただきます!
- Yorisin
- ベストアンサー率54% (364/663)
プログラムがわからないので予想ですが、アクセスを行うカレントディレクトリ(この場合ではC:\Documents and Settings\○)の情報をもって設定ファイルを検索しているのではないでしょうか? 回避するために、たとえば \\192.○○○.○○.○○\共有フォルダ\ をネットワークドライブとしてZ:\マウントし、 C:\Documents and Settings\○○> z: z:\> ○○.exe としてみてはどうでしょうか? たとえば、バッチなら z: ○○.exe でOKです。 勉強不足なのか、IPアドレスで共有フォルダを指定しても 私の環境ではうまくカレントディレクトリを移動できなかったので、 ネットワークドライブだと大丈夫だと思います。
お礼
Yorisinさんの意見に従って試してみたところ、エラーを回避出来ました! これからはもっとネットワークに関しても勉強致します。 どうもありがとうございました!
お礼
丁寧に教えて下さり、大変感謝しています。 ありがとうございました。