私はいくつかのrubyスクリプトを持っていて、同じファイルに対して2つの異なるデフォルトプログラムを使用したいのですが、コードを編集するためだけにWindowsエクスプローラーでダブルクリックすると(たとえばSublime Textで)1つのプログラムが必要ですが、コマンドラインから実行するとスクリプトを実行したい。私はWindows10を使用しています。
これまでのところ、Windowsエクスプローラーの崇高なテキストのデフォルトプログラムを設定しているので、スクリプトは問題なく開きます。
コマンドラインで設定しました
E:\projects\Ruby>assoc .rb
.rb=Ruby.File
そして
E:\projects\Ruby>ftype Ruby.File
Ruby.File=C:\bin\ruby200\bin\ruby.exe "%1" %*
また.RB
、PATHEXT
環境変数を設定したので、スクリプトの名前を入力するだけです。しかし、問題は、私がそうすると、スクリプトを実行する代わりにSublimeTextを起動することです。
Windowsエクスプローラーからデフォルトのプログラムを変更すると、コマンドラインから実行されますが、もちろん、ダブルクリックしても崇高なテキストは開きません。
それでは、2つの異なるデフォルトプログラムを持つことは可能ですか?スクリプトをダブルクリックすると、1つのフォームコマンドラインと別のフォームウィンドウエクスプローラーが表示されますか?
GUIで行うのは簡単ではありませんが、コマンドラインから行うことができます。まず、関連付けを動的にする必要があります。これを行うには、ファイルの関連付けREG_EXPAND_SZ
を含むレジストリキーの値の種類を使用する必要があり.rb
ます。REG_EXPAND_SZ
文字通りには使用されませんが、拡張されます(=環境変数は実際の値に置き換えられます)。assocとの関連付けを作成できますが、reg add
デフォルトのタイプはREG_SZ
。であるため、を使用して変更する必要があります。プログラムパスは次のようにする必要があります。
%RUBY_PROGRAM% "%1" %*
%RUBY_PROGRAM%
これまでのところ、既存の環境変数ではない名前はどこにありますか。これで、その変数にデフォルト値を与えることができます。
setx RUBY_PROGRAM c:\windows\notepad.exe
次に、コマンドプロンプトを閉じて、そのプロパティを変更します(GUIから)。別の方法として、変更したコマンドプロンプトの新しいショートカットを作成することもできます。実行するコマンドは次のとおりです。
%comspec% /k ""c:\setup_ruby.bat""
/k
起動時に特定のバッチファイルを実行できます。そのバッチでは、%RUBY_PROGRAM%
環境変数に別の値を設定する必要があります。
SET RUBY_PROGRAM=C:\bin\ruby200\bin\ruby.exe
これで、その特別なショートカットを実行するたびに、Rubyプログラムを直接実行します。特別なショートカットを作成せず、このルールをすべてのコマンドプロンプトに適用する場合(開いている場所に関係なく)、HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
レジストリキーにエントリを追加できます。
ftype
起動スクリプト(終了バッチも提供)を挿入するだけでもかまいませんが、コマンドラインプロンプトを閉じるまで(Windowsエクスプローラーからファイルをダブルクリックした場合でも)、すべてのアプリケーションに影響します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加