dポイントプレゼントキャンペーン実施中!

あるプログラムに対し、ショートカットを vbsで作成したいのですが、
リンク先の引数で不具合が発生します。

具体的には KeePassというアプリケーションで、
Database.kdeを開き、パスワードにpassを指定する、というものです。
"C:\...\KeePass.exe" "Database.kdb" -pw:"pass"

vbsのソースはこちらです
------------------------------------------------------------
Dim WshShell, fso, ShrCut

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set ShrCut = WshShell.CreateShortcut(WSHShell.CurrentDirectory & "\KeePass.lnk")
ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe"" ""Database.kdb"" -pw:""pass"
ShrCut.WorkingDirectory = WSHShell.CurrentDirectory
ShrCut.IconLocation = WSHShell.CurrentDirectory & "\KeePass.exe"
ShrCut.Save
------------------------------------------------------------

ショートカット作成後に実行すると、"passを探しています と表示されますが、
ショートカットのプロパティを開き、リンク先をコピペで更新すると、動作します。

宜しくお願い致します。

A 回答 (4件)

'MSDN Libraryには一回、目を通しておこうぜ♪頼むから。


'http://msdn.microsoft.com/library/ja/default.asp …
'返ってくるのは
'WshShortcut オブジェクト
'または
'WshURLShortcut オブジェクトオブジェクトなので
'これも引いてみる
'http://msdn.microsoft.com/library/ja/default.asp …
'TargetPathプロパティの説明。
'http://msdn.microsoft.com/library/ja/default.asp …
'【このプロパティに設定できるのはショートカットのリンク先パスのみです。】
'【ショートカットへの引数は Argument プロパティに設定します。】
'実際にはArgumentではなくArgumentsプロパティのようだが、
'それは先ほどのオブジェクトの説明を見て試行錯誤すればわかるでしょ?
Dim WshShell, fso, ShrCut

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

'カレントディレクトリに、ショートカットを作成
Set ShrCut = WshShell.CreateShortcut(WSHShell.CurrentDirectory & "\KeePass.lnk")

'リンク先のパスを記述 ("C:\...\KeePass.exe" "Database.kdb" -pw:"pass")
ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe"

'【必要性を全く感じない】、と述べた上で
'お好みに応じてもしどうしても引用符でくくりたいなら
'ShrCut.Arguments = """Database.kdb"" -pw:""pass"""
'とでも変更してください。
ShrCut.Arguments = "Database.kdb -pw:pass"


'作業フォルダを記述 (カレントディレクトリ)
ShrCut.WorkingDirectory = WSHShell.CurrentDirectory

'ショートカットアイコンを指定
'自動的に引用符でくくられるらしい
ShrCut.IconLocation = WSHShell.CurrentDirectory & "\KeePass.exe"

'ショートカットを保存
ShrCut.Save
    • good
    • 0

もとい、修正



'ショートカットアイコンを指定
'自動的に引用符でくくられるらしい

ではなく

'リンク先のパスを記述 ("C:\...\KeePass.exe" "Database.kdb" -pw:"pass")
'自動的に引用符でくくられるらしい
ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe"

のつもりで書いていた。

なお、ソースコード見てわかるだろうが、Argumentsの方には引用符が自動的には付かないようなので注意
    • good
    • 0
この回答へのお礼

無事、解決しました。
ご回答、有り難うございました。

お礼日時:2007/02/13 19:26

= WSHShell.CurrentDirectory & "\KeePass.exe"" ""Database.kdb"" -pw:""pass"



= WSHShell.CurrentDirectory & "\KeePass.exe Database.kdb -pw:pass"
passが変数で無いとしたら・・これで動きそうなもんだが?
あるいは
= Chr(34) & WSHShell.CurrentDirectory & "\KeePass.exe Database.kdb -pw:pass" & Chr(34)
とか?
    • good
    • 0

ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe"" ""Database.kdb"" -pw:""pass"


ここを
ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe ""Database.kdb "" -pw:pass"
に変更しましょう。

この回答への補足

試してみましたが、動作致しませんでした。
アドバイス、ありがとうございます。

アプリのパスと、Database.kdbと、pass(-pw:passではない)を
""で括りたいのですが、うまくいきませんね。

TargetPath全体を、自動的に""で括っているようですが、
それが関係しているのでしょうか? 考慮はしているのですが

補足日時:2007/02/12 01:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!