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

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

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

あるプログラムに対し、ショートカットを 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を探しています と表示されますが、 ショートカットのプロパティを開き、リンク先をコピペで更新すると、動作します。 宜しくお願い致します。

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

  • ベストアンサー
回答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

  • VBSについて

    VBSの中でDOSのコマンドを実行したいのですが、VBS内で使用した変数を Runで使うことはできないのでしょうか? ################################################ Set WSHShell = CreateObject("WScript.Shell") x = "C:\Documents and Settings\user" WSHShell.Run "cmd.exe /K dir x" ################################################ たとえば上記のようなプログラムを作ったときに最終行のcmd.exeの 実行で変数xを使用したいのですが、可能でしょうか? このまま実行するとコマンドプロンプトの窓が開いて「ファイルが見つかりません」と表示されてしまいます。 何か方法があればご教授ください。よろしくお願いします。

  • バッチファイルファイル→VBS→エクセル マクロを有効にして起動

    Win/XP エクセル2002使用です。 VBSからエクセルのマクロを有効にして立ち上げたいのですが、 上手くいきません。 バッチファイル側  cd /D c:\  C:\***.vbs  exit /B VBS側 'エクセル起動  Set WshShell = CreateObject("WScript.Shell")  WshShell.CurrentDirectory = "C:\***"  WshShell.Run "C:\***\***.xls",3  WScript.Sleep(5000)  WshShell.SendKeys("E") '←マクロを有効にする  WScript.Sleep(5000)  WshShell.SendKeys("U") '←データソースへのリンクを更新 エクセル側(マクロ)  Sub Auto_open()   Application.OnTime TimeValue("13:00:00"), "Action"  End Sub  Sub Action()    ・・・(省略)・・・  End Sub ----------------------------- また、エクセルマクロは、VBSではなく手動で立ち上げますと、 問題なく時間になった時(13時)に作動します。 VBSのRunメソッドが、 エクセルマクロの Application.OnTime を待たずに走ってしまうことで、 エクセルマクロが無効になってしまっているのではないか? もしくは、データ更新のための sendkey("U")によって マクロが無効になってしまっているのはないか? と思っています。 恐れ入りますが、 よろしくアドバイスの程お願いします。

  • マシンの再起動とWindowsの再起動の違いは?

    マシンの再起動とWindowsの再起動では、どういう違いがあるんでしょうか? お願いします http://tclock2ch.hp.infoseek.co.jp/storeroom.htm マシンの再起動-Reboot.vbs Set WSHShell = CreateObject("WScript.Shell") WSHShell.Run "C:\WINDOWS\RUNDLL32.EXE Shell32.dll,SHExitWindowsEx 2" -------------------------------------------------------------------------------- Windowsの再起動-Restart.vbs Set WSHShell = CreateObject("WScript.Shell") WSHShell.Run "C:\WINDOWS\RUNDLL.EXE USER.EXE,ExitWindowsExec"

  • VBSでバッチを実行できません。

    C:\temp\test.batをVBSで実行しようとするのですが、 何度やっても実行されません。 想像ですが、c:\WINNT\System32\cmd.exeが動いている ようなのですが、肝心のC:\temp\test.batが動きません。 以下のように記述しました。 Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run ("cmd /c c:\temp\test,0,True") WIN2K、IE6.0の環境です。 どこか記述に誤りでもあるのでしょうか? どうぞよろしくお願いいたします。

  • JP1からvbs(PSExec)が起動できない

    突然失礼します。 以下のサーバーAにあるvbsを、JP1から起動しようとしていますが、うまく起動しないので、もし原因が分かる方がいたら、ご教授願いたいです。 起動しようとしているサーバーAの「test.vbs」は、簡単に言うと、PsExecを利用して、サーバーBの「hoge.bat」を実行する内容です。 ***test.vbs*** Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "PsExec.exe サーバーBIPアドレス -u 実行ユーザ -p 実行ユーザーパスワード cmd" WshShell.AppActivate "cmd " WScript.Sleep 3000 WshShell.SendKeys "cd C:\" WshShell.SendKeys "{enter}" WshShell.SendKeys "hoge.bat" WshShell.SendKeys "{enter}" WScript.Sleep 10000 WshShell.AppActivate "cmd" WshShell.SendKeys "exit" WshShell.SendKeys "{enter}" ************************ 上記バッチを手動で実行するとうまくいくのですが、 JP1で起動しようとすると、うまくいきません。 そもそもPsExecが実行出来ていないかも。。。。 宜しくお願いします。

  • vbsスクリプト作成について

    いつもありがとうございます。 今回、知識がないのですが下記のような処理のVBSを作成したく調べております。 (1)test.vbsファイルを実行時にvbsファイルと同じディレクトリに「folder」フォルダを作成 (2)作成した「folder」フォルダにサービス「idsvc」の状態をテキスト形式で「service.txt」として出力 (3)上記と同様の処理(service.txtはリネームする)を現在ログインしているユーザのスタートアップに「start.vbs」として配置 (3)上記処理後、再起動を実施 (4)再起動後、start.vbsを実行後に自動削除 大きく分けて4つの処理を個別に作成して最終1つのファイルとして作成しようと思っております。 なんとかわからいなりに作成してはいるのですが どうしても下記方法がわかりません。 (2)の処理「folder」を作成後、service.txtのパス(最下位行)を変数に入れて出力する方法 (きたないソースで申し訳ないです) ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ' フォルダ作成 '---------------------------------------------- Dim str_Path Dim objFdr Set objFdr = CreateObject("Scripting.FileSystemObject") str_Path = objFdr.CreateFolder(".\folder") Dim WshShell Set WshShell = CreateObject("WScript.Shell") Set objLog = WshShell.Exec("cmd /C ""sc query idsvc | findstr -i state > .\folder\service.txt""") ※サービス出力はvbsでの方法がわからなかったのでcmdを呼び出しています。 (4)再起動後の処理にて、再起動前に作成したフォルダに「service.txt」を出力する方法 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ objVBSFile.WriteLine("On Error Resume Next") objVBSFile.WriteLine("Dim WshShell") objVBSFile.WriteLine("Set WshShell = CreateObject(""WScript.Shell"")") objVBSFile.WriteLine("Set objLog = WshShell.Exec(""cmd /C """sc query idsvc | findstr -i state >C:\services.txt"""")") objVBSFile.WriteLine("Set objFSO = CreateObject(""Scripting.FileSystemObject"")") objVBSFile.WriteLine("objFSO.DeleteFile WScript.ScriptFullName") 他にもわからないことはありますが、調べてなんとかなるとおもっておりますが 上記についてはVBSの理解不足なため、つかめません。 申し訳ありませんが、アドバイス頂けないでしょうか。 以上、宜しくお願い致します。

  • VBSファイルをスタートアップフォルダに入れておいて、

    エクセル2007の特定ファイルをそのVBSファイルにより自動起動させる方法を教えてください。ちなみに、次のようなVBSファイルを作成しましたがエラーとなってしまいます。 Option Explicit 'オブジェクト変数の宣言とWshShellオブジェクトの作成。 Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 1000 '1秒待機 objWshShell.Run "C:¥Program Files¥Microsoft Office¥Office12¥EXCEL.exe" です。

  • VBS(WSH)で開いたIEのウィンドウがアクティブにならない

    VBSでタイトルバーのみのIEウィンドウを開き、 SendKeyでtestと入力するスクリプトを作成しています。 ですが、開いたIEのウィンドウがアクティブにならず、 SendKeyがIEに送信されません。 VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが 環境の問題なのか、プログラムの問題なのか判断できません。 どなたかご教授をお願いします。 IEのバージョンは8、OSはWinXPです。 以下、ソースです。 -------------------------------------------------- 'タイトルバーのみのIEを起動する Set WshShell = WScript.CreateObject("WScript.Shell") Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate("http://www.google.co.jp/") objIE.MenuBar = False objIE.StatusBar = False objIE.ToolBar = False objIE.AddressBar = False objIE.Visible = True '表示待ちループ Do While objIE.Busy WScript.Sleep 100 Loop '[test]で検索 WshShell.SendKeys("test") WScript.Sleep(100) WshShell.SendKeys("{TAB}") WScript.Sleep(100) WshShell.SendKeys("{ENTER}") --------------------------------------------------

  • VBSでテキストファイルを作成に関して質問です

    VBSで、Eventquery.vbsを使用してログを世代管理がしたく、VBSを書きました。 テキスト吐き出しがうまくいかないんですが、 どなたかわかる人がいましたら、ご意見をもらえればと思います。 下に、内容を記載します。 ちなみに、吐き出し作業以外は問題なく動作してると思われます。 よろしくおねがいします Option Explicit Dim WshShell,D,DD,MM,YY,E,I,N,F Set WshShell = CreateObject(\"WScript.Shell\") D = Date -1 DD = Mid(D,8,3) MM = Mid(D,6,2) YY = Mid(D,3,2) E = MM&DD&\"/\"&YY WshShell.Run \"cscript C:\\WINDOWS\\system32\\eventquery.vbs /V /FI \"\"Datetime eq \"& E &\",12:00:00AM-\"& E &\",11:59:59PM\" > \"C:\\\" & E & \".log\" Set WshShell = Nothing

  • コピーするVBS

    ファイルサーバーからファイルをデスクトップにコピーするVBSを下記のように作成しています。 Set objFSO= CreateObject("Scripting.FileSystemObject") objFsoCopyFile("\\server\public\test.mdb","C:\Documents and Settings\user\デスクトップ",true) この中で、「C:\Documents and Settings\user\デスクトップ」はパソコンごとに異なりますので、 それぞれのPCのデスクトップをしてする方法を探しています。 ネットで、デスクトップという類のフォルダの取得として Dim WshShell As Object Set WshShell = CreateObject("WScript.Shell") WshShell.SpecialFolders("Desktop") を絡めれば出来るようなことがありましたが、使い方をどなたか教えてください。

専門家に質問してみよう