web-dev-qa-db-ja.com

ディレクトリとすべてのサブディレクトリを1つのエントリでPATH変数に追加します

コマンドラインソフトウェア(CMD_Software)を配置するホームフォルダーにディレクトリがあります。混乱を避けるために、各ソフトウェアをCMD_Software内の独自のディレクトリに配置しました。

コマンドラインからCMD_Softwareとそれに含まれるすべてのディレクトリへのアクセスを許可するPATH変数に1つのエントリを作成したいと思います。

私は試した C:\Users\myuser\CMD_Software\*しかし、それは何もしませんでした。それが私がアイデアを使い果たしたポイントです。

ターミナルで新しいパスを設定しようとしているのではなく、システムのプロパティの[詳細設定]タブにある[環境変数]で新しいパスを設定しようとしていることに注意してください。

20
Landon Brainard

PATH変数は、ワイルドカードや再帰をサポートしていません。これは仕様によるものです。

私が時々使用した2つの可能な回避策があります。

  • 単純なバッチファイルを含むディレクトリを作成し、そのディレクトリをPATHに追加します。各バッチファイルは、必要なプログラムを起動できます。次に例を示します。

    :: CMD_Software.bat: start CMD_Software
    @C:\Users\myuser\CMD_Software\CMD_Software.exe %*
    

    1行目はコメントで、2行目は@で始まり、実行中のコマンドが表示されないようにしています。%*は、コマンドライン引数をEXEに渡すために使用されます。

  • エイリアスをCMD.EXEに追加します。

    DOSKEY CMD_Software="C:\Users\myuser\CMD_Software\CMD_Software.exe" $*
    

    これは基本的に、コマンドプロンプトのCMD_Softwareを等号の後のすべてに変換します。 $*は、指定された引数に置き換えられます。

すべてのエイリアスを1つのファイルにグループ化し(DOSKEY /?の「/ MACROFILE」スイッチを参照)、レジストリ設定を使用してコマンドインタープリターが起動するたびに自動実行することができるため(2番目の方法を推奨します)。 CMD /?)。

2番目の方法の欠点は、エイリアスがコマンドラインの先頭でのみ機能することです。コマンドをチェーンしたい場合、これが問題になることがあります。たとえば、かっこを使用して別の行にエイリアスを配置しない限り、CLS & CMD_Softwareは機能しません。

CLS & (
CMD_Software
)

これが問題になるときはいつでも、バッチファイルのアプローチにフォールバックします。

16
efotinis

...\CMD_Software(または実際には任意の場所)の下に「programlinks \」サブディレクトリを配置し、アクセスしたい各実行可能ファイルへのシンボリックリンクまたはハードリンクをそこに入力します。その場合、...\programlinksのPATH内の単一のエントリで十分です。

1
kreemoweet

このアイデアにあまり気が進まない場合は、コマンドラインツールをWindows\System32ディレクトリにコピーできます。その後、pingやipconfigのように、任意のディレクトリから実行できます。

edit
少しいじり回した後、これはIS可能です。セミコロンを使用してディレクトリを区切る必要があります。「folder1」と「folder2」にプログラムがあるとします。次のようにパスを記述します。

c:\folder1\;c:\folder2\;c:\folder3\;    etc....

次に、コマンドラインから直接、どちらのディレクトリのプログラムでも呼び出すことができます。私の知る限り、これを単一の行だけで行う方法は他にありません。

サポート情報: http://en.wikipedia.org/wiki/PATH_(variable)

0
Lee Harrison