トップ回答者
アプリからバッチファイル起動した時ディレクトリ(カレントディレクトリ)

質問
-
アプリからバッチファイル起動した時ディレクトリ(カレントディレクトリ)は、
・バッチファイルが置かれているディレクトリ
であると考えており、これまではそのように動作していた(注)。この動きは、アプリを別のディレクトリに置いたショートカットから起動させたときも同様だった。
(注)アプリが置かれているディレクトリもバッチファイルが置かれているディレクトリと同じ。
しかし、あるパソコンにおいて、アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ(カレントディレクトリ)が、
・アプリのショートカットが置かれているディレクトリ
となった。このような違い※はOSのバージョン違いなどで起こるものでしょうか?
※カレントディレクトリ管理の相違。
回答
-
> アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ
カレントディレクトリはショートカットの設定などでどこになるかわかりません。
特に、ショートカットを別PCなどからコピーすると、ショートカットに記録されている作業フォルダがコピー先には存在しないなどのトラブルが起こりえます。
作業フォルダをバッチファイルの存在するフォルダにしたければbatの先頭に「cd /d %~dp0」と1行追加してください。
ただし、バッチファイルでコールされた実行ファイルがカレントディレクトリを変更することもあります。 -
© ウィンドウズスクリプトプログラマ - Windows Script Programmer 2020
アプリからバッチファイル起動した時ディレクトリ(カレントディレクトリ)は、
・バッチファイルが置かれているディレクトリ
であると考えており、これまではそのように動作していた(注)。その考えはおかしい。一般に起動時に指定する。指定しないときは、親プロセスのカレントディレクトリを引き継ぐ。
この動きは、アプリを別のディレクトリに置いたショートカットから起動させたときも同様だった。
(注)アプリが置かれているディレクトリもバッチファイルが置かれているディレクトリと同じ。
しかし、あるパソコンにおいて、アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ(カレントディレクトリ)が、
・アプリのショートカットが置かれているディレクトリ
となった。このような違い※はOSのバージョン違いなどで起こるものでしょうか?
アプリプロセスのカレントディレクトリの違い。アプリプロセスのカレントディレクトリは、起動時に指定するか、指定しなければ親プロセスのカレントディレクトリを引き継ぐ。ショートカットの場合、ショートカットにカレントディレクトリが指定されてれば、それ。
違いを知りたければ、アプリのショートカットのプロパティを調べることを勧める。
カレントディレクトリをバッチファイルの場所にしたければ、バッチファイルでその通りする。
- 編集済み ウィンドウズスクリプトプログラマ 2020年6月25日 10:50
- 回答としてマーク aiaitkai 2020年6月26日 5:54
すべての返信
-
> アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ
カレントディレクトリはショートカットの設定などでどこになるかわかりません。
特に、ショートカットを別PCなどからコピーすると、ショートカットに記録されている作業フォルダがコピー先には存在しないなどのトラブルが起こりえます。
作業フォルダをバッチファイルの存在するフォルダにしたければbatの先頭に「cd /d %~dp0」と1行追加してください。
ただし、バッチファイルでコールされた実行ファイルがカレントディレクトリを変更することもあります。 -
© ウィンドウズスクリプトプログラマ - Windows Script Programmer 2020
アプリからバッチファイル起動した時ディレクトリ(カレントディレクトリ)は、
・バッチファイルが置かれているディレクトリ
であると考えており、これまではそのように動作していた(注)。その考えはおかしい。一般に起動時に指定する。指定しないときは、親プロセスのカレントディレクトリを引き継ぐ。
この動きは、アプリを別のディレクトリに置いたショートカットから起動させたときも同様だった。
(注)アプリが置かれているディレクトリもバッチファイルが置かれているディレクトリと同じ。
しかし、あるパソコンにおいて、アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ(カレントディレクトリ)が、
・アプリのショートカットが置かれているディレクトリ
となった。このような違い※はOSのバージョン違いなどで起こるものでしょうか?
アプリプロセスのカレントディレクトリの違い。アプリプロセスのカレントディレクトリは、起動時に指定するか、指定しなければ親プロセスのカレントディレクトリを引き継ぐ。ショートカットの場合、ショートカットにカレントディレクトリが指定されてれば、それ。
違いを知りたければ、アプリのショートカットのプロパティを調べることを勧める。
カレントディレクトリをバッチファイルの場所にしたければ、バッチファイルでその通りする。
- 編集済み ウィンドウズスクリプトプログラマ 2020年6月25日 10:50
- 回答としてマーク aiaitkai 2020年6月26日 5:54