人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

lnkファイル(ショートカットファイル)について質問です。

lnkファイルに別のファイルをドラッグ&ドロップしたとき、ドロップしたファイルがコマンドライン引数の最後尾以外になるようにする方法を教えてください。

例えば、"C\:app.lnk" に "C\:file.txt" をドロップした時に
"C:\app.exe C\:file.txt -Option=Yes" というコマンドが実行されるようにするには、ショートカットにリンク先にどのような文字列を書けばよいのでしょうか?

●質問者: koori
●カテゴリ:コンピュータ
✍キーワード:exe txt yes コマンド コマンドライン
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●25ポイント

%1 が ファイル名です。

"C:\app.exe " %1 " -Option=Yes"

とすればいいでしょう。

◎質問者からの返答

ご回答ありがとうございます。

早速 %1 で試してみたのですが・・・動きませんでした。

引数を調べるソフトを使ってみると、%1がそのまま渡され、その後にドロップしたファイル名が続いているようでした。

上の例とは違いますが、ペイントへのリンク("%SystemRoot%\system32\mspaint.exe " %1)で試してみても、ファイルをドロップすると 「C:\WINDOWS\system32\%1.bmp が見つかりませんでした。」と表示されてしまいます。

環境によって仕様が異なるとは思っていなかったので、環境を書いていなかったのですが、こちらの環境は Windows XP SP2(.NET 1.0、1.1、2.0、3.0、3.5βインストール済)です。

もし、OSによってショートカットの仕様が異なる場合は、各OSでの仕様も教えていただけると助かります。


2 ● Mook
●125ポイント ベストアンサー

直接リンクを編集する方法ではありませんが、VBS を介する方法でどうでしょうか。

赤字の部分を実際の内容に修正してから、適当なファイル名(test.vbs 等)で保存し、

Option Explicit

Const CommandPath = "C:\app.exe"
Const CommandOpt = "-Option=Yes"

Const SHELL_HIDE = 0
Const SHELL_DISPLAY = 1

'------ 引数がない場合は終了
If WScript.Arguments.Count = 0 Then
 MsgBox "実行するファイルを指定してください"
 WScript.Quit
End If

Dim arg
With CreateObject( "WScript.Shell" )
'------ 引数を一つずつ処理
 For Each arg In WScript.Arguments
'------ メッセージが不要な場合は、次の行を削除
 WScript.Echo arg & "の処理を開始します"
'------ メッセージが不要な場合は、画面を隠したいときは SHELL_DISPLAY を SHELL_HIDE に変更
 .Run CommandPath & " "" & arg & """ " & CommandOpt, SHELL_DISPLAY, True
 Next
End With

ここにドロップすれば期待される形で実行されると思います。


この利点として、複数のファイルをドロップしても一つずつ処理できます。

また、オプション(SHELL_DISPLAY/SHELL_HIDE の部分)の指定で画面に処理を表示せずに実行することもできます。

◎質問者からの返答

ご回答ありがとうございます。

ですが・・・すみません、せっかくVBSを書いて頂いたのに申し訳ないのですが、今回の質問の最終的な目的はコマンドを実行することではなく、ショートカットと独自のショートカットもどきファイルとの相互変換をする事だったんです。

ですので、書いていただいたスクリプトは、また別の機会に活かさせて頂きたいと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ