質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

Q&A

解決済

1回答

380閲覧

ショートカットをスクリプトで大量に作成したい

shinobi_75

総合スコア1

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

0グッド

0クリップ

投稿2023/10/22 05:02

実現したいこと

  • A.ショートカットからFirefoxのプライベートモードでネットワーク機器のWebGUIにアクセスしたい。
  • B.ショートカットからTeraTermでネットワーク機器にSSH接続でアクセスしたい。

前提

手作業では上記実現したいことはできている。
A.ショートカットのプロパティからリンク先に下記パスとネットワーク機器のIPアドレスを引数に指定
"C:\Program Files\Mozilla Firefox\private_browsing.exe" https://XXX.XXX.XXX.XXX
B.ショートカットのプロパティからリンク先に下記パスとネットワーク機器のIPアドレス、ユーザ名、パスワード等を引数に指定
"C:\Program Files (x86)\teraterm\ttermpro.exe" XXX.XXX.XXX.XXX:22 /ssh2 /KR=UTF8 /KT=UTF8 /auth=password /user=XXXXX /passwd=XXXXXX

下記のスクリプトにてconfig.datを読込みショートカット作成を試みるも、パスのみであれば作成できるが、引数を指定するとエラーで作成ができない。
@IT:Windows TIPS -- Tips:デスクトップ上に必要なショートカットを自動生成する
https://atmarkit.itmedia.co.jp/fwin2k/win2ktips/434shortcut/shortcut.html

config.datの中身(WebGUIショートカット作成用)
Hostname_shortcut Comment "C:\Program Files\Mozilla Firefox\private_browsing.exe" https://XXX.XXX.XXX.XXX

発生している問題・エラーメッセージ

スクリプト等で、ショートカット名=ホスト名で、リンク先に実行ファイルと引数を入れたショートカットを大量に作成したいが、エラーで作成できない。

スクリプト: C:\Users\XXXX\デスクトップ\shortcut.wsf 行:19 文字:6 エラー:プロシージャの呼び出し、または引数が不正です。 コード:800A0005 ソース:Microsoft VBScript 実行時エラー

該当のソースコード

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?> <package> <job id="shortcut"> <?job error="true" debug="true" ?> <object id="objFs" progid="Scripting.FileSystemObject" /> <script language="VBScript"> <![CDATA[ ' ショートカットの情報を記述した設定ファイルの格納場所 ' 設定ファイルのパスについては、各自の環境に合わせて変更する必要がある Const CONFIG="C:\config.dat" Set objTs=objFs.OpenTextFile(CONFIG,1,False) ' config.datの情報に基づいて、ショートカットを作成する ' config.datにはタブ区切りテキスト形式で、ショートカットのファイル名、コメント、リンク先のパス、ホット・キーが定義されているものとする。 Do While Not objTs.AtEndOfStream aryDat=Split(objTs.readLine,Chr(9)) Set objShl=WScript.CreateObject("WScript.Shell") Set objCut=objShl.CreateShortcut(objFs.BuildPath(objShl.SpecialFolders("Desktop"),aryDat(0) & ".lnk")) ' デスクトップ上にショートカットを作成 objCut.Description=aryDat(1) ' コメント objCut.TargetPath=aryDat(2) ' リンク先のパス ' 作業フォルダ(My Documents) objCut.WorkingDirectory=objShl.SpecialFolders("MyDocuments") objCut.Save ' 生成したショートカットを保存 Loop objTs.Close ]]> </script> </job> </package>

試したこと

引数なしだとエラーなく動作し、ショートカットが作成されるが、手作業で引数を追加せざるを得ず、現実的ではない。

スクリプトの修正案やその他のアプローチなどご教示いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

objCut.TargetPathに、
"C:\Program Files\Mozilla Firefox\private_browsing.exe" https://XXX.XXX.XXX.XXX
をセットしているという事でしょうか?TargetPathは質問文掲載のコードのコメントの通り「リンク先のパス」です。コマンドラインではないです。

VBS

1objCut.TargetPath = "C:\Program Files\Mozilla Firefox\private_browsing.exe" 2objCut.Arguments = "https://XXX.XXX.XXX.XXX"

ですね。
参考にしたページでは、引数無しの例だったのでは?

ショートカット実行時のエラーでなくて、ショートカット作成時のエラーということで、最初ちょっと不審だったのですが、コロン:が入っているので、「ドライブ名がおかしいのでパス名として不正」のような扱いだったのでしょう。C:\Windows\system32\notepad.exe aaaa.txtのようなTargetPathであれば、作成は成功して、実行時に「そんなファイルは無い」的なエラーになると思います。

投稿2023/10/22 12:22

otn

総合スコア84645

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinobi_75

2023/10/25 08:29

otn 様 ご回答いただきありがとうございます。 上手くいかなかった時に、Descriptionに引数を入れて作成されたショートカットのプロパティより、コピペするという手法でごまかしていました。 objCut.Description=aryDat(1) ' コメント objCut.TargetPath=aryDat(2) ' リンク先のパス 下記に修正することで、期待通りのショートカットが作成されました。 ありがとうございます。 objCut.Arguments=aryDat(1) ' target objCut.TargetPath=aryDat(2) ' リンク先のパス
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問