none
exeをコマンドで実行したい(複数のPCで利用可能な) RRS feed

  • 質問

  • PCによって○○.exeの配置パスが違います。※Program FilesやProgram Files (x86)など

    どのPCでも任意の○○.exeを実行するPowerShellやbatを作成することは可能ですか。

    例)

    C:\Program Files (x86)\xx\xxx\x86\○○.exe

    C:\Program Files\xx\xxx\○○.exe

    よろしくお願いします。

    2019年3月4日 2:41

回答

  • どこにあるかわからないexeを実行するのは難しいと思います。あらかじめいくつか固定のパスが分かっている場合は、一つずつパスにファイルが存在するかどうか調べて、存在していたら実行するというようなスクリプトは組めると思います。

    または、exeをインストールする際にWindowsの環境変数のPATHに該当のフォルダーを追加して置けば、exeのファイル名だけで実行が可能です。
    2019年3月4日 2:59
  • Program Filesに入るようなアプリケーションならインストーラを使っていることがほとんどでしょうから、レジストリを探せばインストールしたフォルダや実行ファイルのパスが格納されている可能性があります。どこに何が記述されているかはアプリケーション次第なので具体的なことは言えませんが。

    // あと、cmd.exeにせよPowerShellにせよ、コマンドライン側のx86/x64次第でレジストリの見え方が異なる箇所もあります。詳しくは「レジストリリダイレクト」などをお調べください。

    • 回答としてマーク se.matsumoto 2019年3月4日 8:39
    2019年3月4日 3:14
  • アプリケーションのインストーラーが登録すべき内容はApplication Registrationにまとめられています。Path以外にもファイルの関連付けやApp Pathsなどさまざまな起動方法があります。

    例えばGoogle ChromeやMozilla FirefoxはPATHにこそ登録していませんが、App Pathsには登録しているためバッチファイルからは

    start chrome.exe
    

    PowerShellからは

    Start-Process firefox.exe

    で起動可能になっています。

    • 回答としてマーク se.matsumoto 2019年3月4日 8:39
    2019年3月4日 5:45

すべての返信

  • どこにあるかわからないexeを実行するのは難しいと思います。あらかじめいくつか固定のパスが分かっている場合は、一つずつパスにファイルが存在するかどうか調べて、存在していたら実行するというようなスクリプトは組めると思います。

    または、exeをインストールする際にWindowsの環境変数のPATHに該当のフォルダーを追加して置けば、exeのファイル名だけで実行が可能です。
    2019年3月4日 2:59
  • Program Filesに入るようなアプリケーションならインストーラを使っていることがほとんどでしょうから、レジストリを探せばインストールしたフォルダや実行ファイルのパスが格納されている可能性があります。どこに何が記述されているかはアプリケーション次第なので具体的なことは言えませんが。

    // あと、cmd.exeにせよPowerShellにせよ、コマンドライン側のx86/x64次第でレジストリの見え方が異なる箇所もあります。詳しくは「レジストリリダイレクト」などをお調べください。

    • 回答としてマーク se.matsumoto 2019年3月4日 8:39
    2019年3月4日 3:14
  • アプリケーションのインストーラーが登録すべき内容はApplication Registrationにまとめられています。Path以外にもファイルの関連付けやApp Pathsなどさまざまな起動方法があります。

    例えばGoogle ChromeやMozilla FirefoxはPATHにこそ登録していませんが、App Pathsには登録しているためバッチファイルからは

    start chrome.exe
    

    PowerShellからは

    Start-Process firefox.exe

    で起動可能になっています。

    • 回答としてマーク se.matsumoto 2019年3月4日 8:39
    2019年3月4日 5:45
  • ご回答ありがとうございます。

    環境変数をPCの台数だけ変更するのは、今回の場合難しいです。

    if文などを利用した簡単なプログラムを作成するしかなさそうですね。

    2019年3月4日 8:42
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2019
    one liner ならこんな感じ。

    cmd.exe /c set xxx=c:\windows;c:\windows\system32&for %1 in (notepad.exe) do "%~f$xxx:1"
    2019年3月13日 2:07