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

  • 質問

  • アプリからバッチファイル起動した時ディレクトリ(カレントディレクトリ)は、
    ・バッチファイルが置かれているディレクトリ
    であると考えており、これまではそのように動作していた(注)。

    この動きは、アプリを別のディレクトリに置いたショートカットから起動させたときも同様だった。

    (注)アプリが置かれているディレクトリもバッチファイルが置かれているディレクトリと同じ。

    しかし、あるパソコンにおいて、アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ(カレントディレクトリ)が、

    ・アプリのショートカットが置かれているディレクトリ
    となった。

    このような違い※はOSのバージョン違いなどで起こるものでしょうか?

    カレントディレクトリ管理の相違。

    2020年6月24日 0:22

回答

  • > アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ
    カレントディレクトリはショートカットの設定などでどこになるかわかりません。
    特に、ショートカットを別PCなどからコピーすると、ショートカットに記録されている作業フォルダがコピー先には存在しないなどのトラブルが起こりえます。

    作業フォルダをバッチファイルの存在するフォルダにしたければbatの先頭に「cd /d %~dp0」と1行追加してください。
    ただし、バッチファイルでコールされた実行ファイルがカレントディレクトリを変更することもあります。
    • 編集済み 一柳 2020年6月26日 1:19
    • 回答としてマーク aiaitkai 2020年6月26日 5:54
    2020年6月25日 6:59
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2020



    アプリからバッチファイル起動した時ディレクトリ(カレントディレクトリ)は、
    ・バッチファイルが置かれているディレクトリ
    であると考えており、これまではそのように動作していた(注)。

    その考えはおかしい。一般に起動時に指定する。指定しないときは、親プロセスのカレントディレクトリを引き継ぐ。



    この動きは、アプリを別のディレクトリに置いたショートカットから起動させたときも同様だった。

    (注)アプリが置かれているディレクトリもバッチファイルが置かれているディレクトリと同じ。

    しかし、あるパソコンにおいて、アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ(カレントディレクトリ)が、

    ・アプリのショートカットが置かれているディレクトリ
    となった。

    このような違い※はOSのバージョン違いなどで起こるものでしょうか?

    アプリプロセスのカレントディレクトリの違い。アプリプロセスのカレントディレクトリは、起動時に指定するか、指定しなければ親プロセスのカレントディレクトリを引き継ぐ。ショートカットの場合、ショートカットにカレントディレクトリが指定されてれば、それ。

    違いを知りたければ、アプリのショートカットのプロパティを調べることを勧める。


    カレントディレクトリをバッチファイルの場所にしたければ、バッチファイルでその通りする。


    2020年6月25日 8:08

すべての返信

  • > アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ
    カレントディレクトリはショートカットの設定などでどこになるかわかりません。
    特に、ショートカットを別PCなどからコピーすると、ショートカットに記録されている作業フォルダがコピー先には存在しないなどのトラブルが起こりえます。

    作業フォルダをバッチファイルの存在するフォルダにしたければbatの先頭に「cd /d %~dp0」と1行追加してください。
    ただし、バッチファイルでコールされた実行ファイルがカレントディレクトリを変更することもあります。
    • 編集済み 一柳 2020年6月26日 1:19
    • 回答としてマーク aiaitkai 2020年6月26日 5:54
    2020年6月25日 6:59
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2020



    アプリからバッチファイル起動した時ディレクトリ(カレントディレクトリ)は、
    ・バッチファイルが置かれているディレクトリ
    であると考えており、これまではそのように動作していた(注)。

    その考えはおかしい。一般に起動時に指定する。指定しないときは、親プロセスのカレントディレクトリを引き継ぐ。



    この動きは、アプリを別のディレクトリに置いたショートカットから起動させたときも同様だった。

    (注)アプリが置かれているディレクトリもバッチファイルが置かれているディレクトリと同じ。

    しかし、あるパソコンにおいて、アプリをショートカットから起動させてバッチファイル起動した時のディレクトリ(カレントディレクトリ)が、

    ・アプリのショートカットが置かれているディレクトリ
    となった。

    このような違い※はOSのバージョン違いなどで起こるものでしょうか?

    アプリプロセスのカレントディレクトリの違い。アプリプロセスのカレントディレクトリは、起動時に指定するか、指定しなければ親プロセスのカレントディレクトリを引き継ぐ。ショートカットの場合、ショートカットにカレントディレクトリが指定されてれば、それ。

    違いを知りたければ、アプリのショートカットのプロパティを調べることを勧める。


    カレントディレクトリをバッチファイルの場所にしたければ、バッチファイルでその通りする。


    2020年6月25日 8:08