@で始まるWindowsショートカットターゲットパラメーター


12

デスクトップショートカットといくつかのコマンドラインパラメーターを使用して起動する必要があるWindowsアプリケーションがあります。

私はこれを何千回も行いましたが、これは少し異なります。-e 12345またはのような通常のコマンドラインパラメータを使用する代わりに-example 12345、これは@12345@記号で始まる)を使用します。

Windowsのショートカットは、このパラメーターが実行可能ファイル名の直後に来るのを好まず、すべてを削除します。理由はわかりません。

例えば:

c:\example\example.exe @12345 -e9876「ターゲット」として、保存するとき、すべてのパラメーターを取り除きc:\example\example.exe、ターゲットのままにします。

しかし、 c:\example\example.exe -e9876 @12345うまく動作します。保存して検証し、すべてが良好です。

ただし@、コマンドの最初のパラメーターにする必要があります。コマンドをバッチファイルにラップしてバッチを呼び出すようなことをすることとは別に@、Windowsショートカットの最初のコマンドラインパラメーターとしてシンボルを使用するにはどうすればよいですか?


1
他のオプションは、プログラムがそれをサポートしていると仮定して、パラメータを(個別に)引用することです。paramsがターゲットフィールドからなくなっている:私はちょうどかかわらず、テストで見つかった興味深い振る舞いが、彼らはまだターゲット・プログラムに渡されています!実際、フィールドを再度編集するまで、現在表示されていないパラメーターが保持され、.lnkファイルは実際には異なります。(渡されたパラメーターを単にエコーするバッチファイルとしてターゲットでテストされました。)
ボブ

回答:


13

誰かわかったね?... Windowsは@文字を区切り文字として扱います。Windowsコマンドは、コマンドの最初の要素のみを解釈します...そのため、残りは事実上切り捨てられます。どうやら、シンボル^エスケープする前にを指定することで、動作をオーバーライドできます。

すなわち

c:\example\example.exe ^@12345 -e9876


3
おい!できます!好奇心から、その答えはいったいどうやって見つけましたか?
マークヘンダーソン

3
昨年のディープな暗い投稿。もはや存在しない(または、少なくとも簡単に見つけることができない)文書を参照し、それらの情報の一部に言及した人がいました。また、他の問題を引き起こす可能性のある$やなどの%キャラクターについても言及しました。同じ^文字を使用してこれらをエスケープできます。^^期待どおりに行うことで、エスケープをエスケープすることもできます。
TheCompWiz

4
@MarkHenderson Caretシンボル "^"は、少なくともNT 3.5(はい:古いです)以来、WIN32(およびそれ以降の64ビット)API全体で使用される標準の "次の文字をエスケープする"シンボルです。 )。コマンドラインを指定できるWindowsのほぼすべての場所で機能します:CMDスクリプト/プロンプト、WINDOWS + R実行ボックス、ショートカット、サービスやスケジュールされたタスクに関連付けられたコマンドラインで、少ない。
トニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.