今回の基本
ショートカットを使う
特定のURLショートカットをブラウザ指定で作成する方法【Chrome/Firefox/Edge】
これからいう方法は安定はしないので、時間がない人はこちらの方法を使うほうがおすすめ。
VBScriptを使う
PowerShell でショートカットを作る
PowershellでもWindows Scripting Hostを呼び出すので、ほぼ変わらない。
拡張子はURLではない
VBScript Tips (Tips0121)
Webだからといって拡張子はURLではなく.lnk
になる。
アイコンも変えられる
バッチファイルとVBScriptを併用してショートカットアイコンを作成する
今回はそこまではやらない。
頭から64bitは64bitと決めつけず、exeの場所を直接、またはショートカットのプロパティで確認する。
当方はEdgeは32bitでした。
環境変数が使える
Windows10の環境変数の一覧と調べ方。便利な使い方も解説 | 己で解決!泣かぬなら己で鳴こうホトトギス
Windows で 32bit/64bit を確実に判断する|PROCESSOR_ARCHITECTUREとPROCESSOR_ARCHITEW6432 | ハングスタック
今回、Chromeは64bitだった。
コードのポイント
TargePathは実行ファイルのみ
TargetPathにURLをぶち込んでもほぼ失敗する。
かといって、一度書いて、書き換えるわけでもない。
【VBScript】ショートカットファイルのリンク先を一括変更するサンプルコード - ITエンジニアの備忘録的技術ブログ【仮】
正解はここに
公式は複数個所に記述がありややこしい。
Lern > Windows Server
wscript | Microsoft Learn
正解は、
Learn トラブルシューティング Windows Windows クライアント
Windows スクリプト ホストを使用してデスクトップ ショートカットを作成する - Windows Client | Microsoft Learn
この記事では、Visual FoxPro 内から Microsoft Windows スクリプト ホスト (WSH) を使用してデスクトップ ショートカットを作成する方法について説明します。
と一見全く関係のない記述から始まるこの記事にあった。
Argument 引数
正解はargementを使う。なお、+
でつながなくても成功した。
URLはプロファイルのあと
Chromeはそうだった。
コード
前提条件
目的
www.yahoo.co.jp
を開く
ブラウザは64bitのChromeと32bitのEdge
Chromeのプロファイルはデフォルト
ChromeはOSのBit数に従ってフォルダが決まる
作業フォルダは、各ブラウザのショートカットアイコンにあるものを使用
注意 同名のショートカットの削除
同名のショートカットは削除されるので注意
注意 デスクトップの取得
仮想端末だけではなく、OneDriveを使う場合でもDeskTopがOneDriveのデスクトップになる場合がある。
この挙動があまりよくわかっていない。
OneDriveのアカウントとWIndowsのアカウントが同じな場合は問題がないようだが。
Option Explicit
Dim objWshShell ' WshShell オブジェクト
Dim strDesktopPath ' デスクトップのフォルダ名 ただし、仮想端末の場合はこれで拾えるかはわからない。
Dim objShortcut ' ショートカットファイル
Dim strPath ' プログラム(アプリ)のフォルダ
Dim strTarget
Dim strEx
strEx = "lnk"
Set objWshShell = WScript.CreateObject("WScript.Shell")
On Error Resume Next
strDesktopPath = objWshShell.SpecialFolders("Desktop") ' 仮想の場合はこれではなく、実際のフォルダ名 \\Server\name\...\Desktopの可能性がある。
' エラーがなければ処理を進める
If Err.Number <> 0 Then WScript.Quit
strPath = objWshShell.ExpandEnvironmentstrings("%ProgramW6432%")
WScript.Echo strPath
With CreateObject("Scripting.Filesystemobject")
if .fileexists(strDesktopPath & "\yahoo1." & strEx) then .DeleteFile strDesktopPath & "\yahoo1." & strEx
End with
strTarget = strPath & "\Google\Chrome\Application\chrome.exe"
Set objShortcut = objWshShell.CreateShortcut(strDesktopPath & "\yahoo1." & strEx) ' 拡張子Urlでインターネット用になる
Wscript.Sleep 500
With objShortcut
.TargetPath = strTarget
' この書き方の場合ダブルクォーテーションの数(エスケープ)に注意
.Arguments = " --profile-directory=""Default""" & " https://www.yahoo.co.jp"
.WorkingDirectory = strPath & "\Google\Chrome\Application\"
.Save
End With
With CreateObject("Scripting.Filesystemobject")
if .fileexists(strDesktopPath & "\yahoo1." & strEx) then .DeleteFile strDesktopPath & "\Edge-yahoo1." & strEx
End with
Set objShortcut = objWshShell.CreateShortcut(strDesktopPath & "\Edge-yahoo1." & strEx) ' 拡張子Urlでインターネット用になる
Wscript.Sleep 500
With objShortcut
.TargetPath = "%programfiles(x86)%" & "\Microsoft\Edge\Application\msedge.exe"
.Arguments = " https://www.yahoo.co.jp"
.WorkingDirectory = "%programfiles(x86)%" & "\Microsoft\Edge\Application\"
.Save
End With
Set objShortcut = Nothing
Set objWshShell = Nothing
Google Chrome以外も違うプロファイルはあるのか
Microsoft Edge でサインインして複数のプロファイルを作成する
Firefox で複数のプロファイルを使い分ける方法 – ラボラジアン
## 多分プロファイルでさらに使う分けられる
ショートカットまで作成できる以上、後ろにURLをつければ作成できる。
しかし、これには複数のプロファイルを作らないといけないので、今回はできなかった。