コマンドライン引数をWindowsの「アプリケーションから開く」に渡す


28

特定のショートカットで開くプログラムがありますが、ショートカットはアプリケーションにパラメーターを送信するようです。ターゲットディレクトリに直接移動してダブルクリックすると、機能しません。ただし、コマンドラインを使用して特定の引数を渡すと、アプリケーションが正しく開きます。

アプリケーションを使用して特定の種類のファイルを開きたいのですが、アプリケーションにパラメーターが必要です。そうしないと機能しません。このようなことをすることは可能ですか?


どのバージョンのWindowsを使用していますか?
iglvzx

私はWindows 7を使用しています。
jtpereyda11年

1
これは、よりよい解決策を持っています superuser.com/questions/136133/...

回答:


20

@jtpereydaと同じ問題に遭遇し、@ bobbymcrからの解決策もうまくいきませんでした。コマンドでnode.exeを必要とせずに、すべてのコマンドラインパラメーターをnode.jsスクリプトに渡そうとしました。

問題は、Open Withダイアログを介してプログラムを拡張子にすでに関連付けている場合、ファイル拡張子の関連付けではなく、2つの間にアプリケーションの関連付けを作成することです。そして、アプリケーションの関連付けが優先されます。

レジストリの編集を気にしない場合(Default)は、次のパスでキーを変更できます。

HKEY_CLASSES_ROOT\Applications\node.exe\shell\open\command

node.exe調整しているアプリケーションに置き換える必要があります。

または、フォルダからアプリケーションフォルダをHKEY_CLASSES_ROOT\Applications完全に削除するだけで、ftype関連付けが機能し始めます。

%*残りの未指定のコマンドライン引数を渡すか、まったく渡さないことを確認してください。これを行う"%2" "%3" "%4" "%5"と、コマンドライン引数を指定しない場合、5つの空の文字列パラメーターがアプリケーションに渡されます。

最後に、レジストリを手動で変更しても問題ない場合は、Nirsoft-FileTypesManager- http: //www.nirsoft.net/utils/file_types_manager.htmlのフリーウェアツールを使用できます

ファイルの関連付けは、リストの一番上に表示され、最初の拡張子の列にはテキストが表示されません。リストで実行可能ファイルの名前を見つけて選択command lineし、openアクション名のフィールドを変更します。

windows7では、変更は再起動やアプリケーションの再起動なしですぐに反映されました。ただし、Nirsoftユーティリティには変更があると「デスクトップを更新」する機能があるため、Vista以前のOSバージョンではデータがキャッシュされる可能性があります。この場合、ユーティリティの方が良い方法です。そうでない場合は、ログオフしてからログオンして変更を確認する必要があります。


1
注:関連ファイルをプログラムに渡すには、常に%1を使用する必要があるようです。直接%*を使用すると機能しないようです。少なくとも「.pl」で問題が発生しました-勝利7でperlの関連付け
-vlad_tepesch

1
試行錯誤によって機能するようになり、次のデータ値が得られました。"C:\Program Files\nodejs\node.exe" "%1"%*注:%*値は引用符で囲まれておらず、前の二重引用符との間にスペースがありません。
マイケルポールコニス

また、手順を実行していたファイルの拡張子がHKEY_CLASSES_ROOT\.ulawどこに.ulawあるかに備えて、regeditでキーを削除しました。
マット

開くときに引数(「テスト」など)を渡すことができますか?
Apparao

インストールコンテキストに応じて、「[HKLM | HKCU] \ Software \ Classes」を明示的に変更するには、この回答を変更してください。HKCRを直接変更しないでください。ファイルの種類と記事については、「重要な考慮事項」を参照してHKEY_CLASSES_ROOTください。これは、Microsoft自身の文書の多くを与えられた理解しやすい誤解は、Windows 2000年頃に導入されたHKCRのための統合されたビューを以前からだ
Eryk日

10

あなたがこれを行うことができますassocし、ftypeプロンプトのコマンドで。管理者特権でコマンドプロンプトを開き、次のことを試してください。

ftype MyFileType = C:\ MyDir \ MyProgram.exe / arg1 / arg2 "%1"
assoc .xyz = MyFileType

これにより、.xyz拡張機能が関連付けられ、MyProgram.exeコマンドライン/arg1 /arg2 [filename.xyz]がプログラムに渡されて実行されます。


1
これは私が研究したことから正しい答えであると思われるため、受け入れられました。ただし、このプロセスは、使用しているシステムでは効果がないようです。ftypeとassocを使用して、変更が行われたことを確認できますが、ファイルを開くために使用されるプログラムには影響しません。Windows 7でプロセスが変更されたのでしょうか?
jtpereyda

Marcus Popeの回答を使用すると、Windows 7を使用して、私の側で正しく動作します。定義済みの引数.ulawsox使用してファイルを再生しようとしていました。古いアプリケーションを削除することに加えてHKEY_CLASSES_ROOT\.ulaw、ファイルの種類を定義していたアプリケーションも削除したことに注意してください。
マット

CMD assocおよびftypeはレガシーコマンドです。Windows XP、7、および8で追加されたファイルの関連付けの拡張子については更新されませんでした。システムキー "HKLM \ Software \ Classes"の下のファイルの関連付けとProgIdキーのみを変更します。ユーザーごとのHKCU設定を読み取ったり変更したりすることはありません。HKCU設定は、優先順位、または「アプリケーション」や「SystemFileAssociations」などの新しいサブキー、「RegisteredApplications」からのアプリケーションごとの機能キーを取得します。また、「HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts」の下にあるユーザーの選択を読み取ったり変更したりしません。
エリック

3

質問をした人は、ベストアンサーが実際に機能しないと報告しています。

私はXPでそれを理解しました。これは後のOSにも当てはまるかもしれません。

CMDプロンプトで次の2つのコマンドが必要です:assocftype

これら2つは、関連付けられているものを表示してから関連付けを編集できますが、ねじれがあり、MSの指示が間違っている/不完全であるように見えます。既知のベテランアプリケーションによって、文書化されていない関連付けスタイルに気づいたことで、このことを警告されました。なぜですか。

この例では、多くの引数を関連プログラムに渡すことができます。

ftype name_of_assoc="C\blah\aprog.exe" "%1" "%*"

誤植ではありません"%1" "%*"。パーセントスターは、先行するパーセントがなければ機能しません1

そして、それはすぐに公開され、ログアウトする必要はありませんなど。

正しく実行すると、arg []に3が渡さ​​れます

myfile.wotsit file1 file2 file3

まだやっていませんが、プログラムにフラグが必要な場合は、次の外部引用符が-mを渡すようです。

ftype name_of_assoc="C\blah\aprog.exe" -m "%1" "%*"

これは正しいとは思いません。「%*」を引用符で囲むと、引数のリストが単一の引数として渡されます。また、ドライブ文字の後にコロンがありません。正しいコマンドは次のとおりです。ftype name_of_assoc = "C:\ blah \ aprog.exe" -m "%1"%*
User0

私は優れたFilesTypeManプログラムを使用していますが、この場合は%1 %* 引用符なしで必要です!!! いまいましい窓
ジャンフランソワファーブル

2

Windows7を搭載した古いバージョンのPSPでも同様の問題が発生しました

このソリューション(レジストリのshell \ open \ command行を変更する)は機能しましたが、構文 "C:\ MyFolderName \ PSP.EXE"が必要でした%1 NO QUOTES AROUND%1それ以外の場合、これは定数として解釈されます


1
なぜダウン投票ですか?この答えは、最終的にコマンドを正しくするのに役立ちました!
ylka


1

最善の解決策ではありませんが、最も簡単な解決策はバッチファイルを使用することです。

そのようなbatファイルを作成し、デフォルトのプログラムをファイル拡張子に合わせて設定します。はい、開始後の空の引用符が必要です。

{アプリ名} .bat

    start "" "{app path}" %1 /edit

例:

BCompareEdit.bat

    start "" "C:\Program Files\Beyond Compare 4\BCompare.exe" %1 /edit

1
これは、Windows 10で機能する唯一のソリューションです。仮想デスクトップでWordを使用するために必要な、起動ごとに新しいインスタンスを作成する/ wオプションでWord 2013を起動するのに役立ちます。
ヴィクモルテルマン

0

これは、まさにあなたが望むことをするように見える拡張です。私は前にそれを使用したことがないが、それは良いレビューを得るようです。問題がある場合はコメントを残してください。


-1

Windowsショートカットを作成し、次のテンプレートを使用します。

"C:\Windows\system32\mspaint.exe" "c:\data\basejpg.jpg" %1

2
そして、ユーザーはこれをどのように使用してファイルを開きますxyz.jpgか?
G-Manによる「Reinstate Monica」

彼は、これを実現するためにレジストリを変更する方法を尋ねました。
ロール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.