• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vbsのショートカット作成で、引数に不具合がでる)

vbsのショートカット作成で引数に不具合が発生

このQ&Aのポイント
  • vbsのショートカット作成で引数に不具合が発生しています。
  • 具体的にはKeePassというアプリケーションで、Database.kdeを開く際にパスワードの引数設定で問題が発生しています。
  • ショートカット作成後に実行すると「passを探しています」と表示されますが、ショートカットのプロパティを更新することで正常に動作します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

'MSDN Libraryには一回、目を通しておこうぜ♪頼むから。 'http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsMthCreateShortcut.asp '返ってくるのは 'WshShortcut オブジェクト 'または 'WshURLShortcut オブジェクトオブジェクトなので 'これも引いてみる 'http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsobjwshshortcut.asp 'TargetPathプロパティの説明。 'http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsprotargetpath.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

その他の回答 (3)

回答No.4

もとい、修正 'ショートカットアイコンを指定 '自動的に引用符でくくられるらしい ではなく 'リンク先のパスを記述 ("C:\...\KeePass.exe" "Database.kdb" -pw:"pass") '自動的に引用符でくくられるらしい ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe" のつもりで書いていた。 なお、ソースコード見てわかるだろうが、Argumentsの方には引用符が自動的には付かないようなので注意

benzie31
質問者

お礼

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

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

= 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) とか?

noname#77845
noname#77845
回答No.1

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

benzie31
質問者

補足

試してみましたが、動作致しませんでした。 アドバイス、ありがとうございます。 アプリのパスと、Database.kdbと、pass(-pw:passではない)を ""で括りたいのですが、うまくいきませんね。 TargetPath全体を、自動的に""で括っているようですが、 それが関係しているのでしょうか? 考慮はしているのですが

関連するQ&A