前回、バッチファイルの作成について書きました。
【バッチファイル】指定した順番にアプリケーションを開くスクリプトを書いてみた - ゆるおたノート
ただ、分からないことがあって、「動く」ものが出来るまで3ヶ月も掛かってしまいました。
…こういうのは独学あるあるでしょうか。
まだ全部は解決してないですが、分かったことを記録しておこうと思います。
Google Chromeの便利機能も自動化するには…?
Chromeのユーザーごとに開きたい
Google Chromeでは、アカウントごとにブラウザを分けて使うことが出来る。
(今の仕事で知りました)
プロフィールを使用すると、自分の Chrome 情報(ブックマーク、履歴、パスワード、その他の設定)のすべてを他のユーザーと別々に保持することができます。
次の場合はプロフィールの使用をおすすめします。
複数の人とパソコンを共有する。
仕事用と個人用などで別々のアカウントを使用する。
これを利用してChromeの「ユーザー」を指定して起動しようとしたら、少し苦労した。
パスを確認してみる
まず何も考えずChromeのパスを指定して開くと、最後に開いていたユーザーとしてブラウザを起動する。
start "" /max "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
これはこれで便利なのだけど、「このアカウントで!」って出来るともっと嬉しい。
そこで、試しに適当なユーザーのショートカットで右クリックして、プロパティを見てみる。
--profile-directory
のあとの部分に、ユーザーを特定する情報が入っているらしい。
デフォルトのユーザーは、画像のようにDefault
。
その後、ユーザーを追加するごとにProfile 1
、Profile 2
、Profile 3
、…と増えていく。
今回指定したいユーザーは「Profile 13」だったので、リンク先は下記のようになっている。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 13"
ユーザーを指定して開きたい
パスが分かったので、まずは下記のように指定してみた。
@rem Chromeのパス set userA="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --profile-directory=Profile 13" start "" /max %userA% echo %userA%
実行してみると…
怒られた。
「♪そこに~ファイルあ~りません~残ってなんか~いません~」ですと??
…分かる人からしたら、この時点で「ダメだこいつ」だと思う。
🤔「あ、これじゃ開けないんだ…」
🤔「パスは…ん、合ってるな?」
🤔「合ってるのに開けないの???なぜ???」
少し考えて、分解して変数にしてみた。
@rem Chromeのパス @rem (`--profile-directory=`まで変数にしてみる) set chromeExePath="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --profile-directory=" @rem ユーザーのプロファイル番号 @rem (ユーザーを変える時はここを変える) set myProfile="Profile 13" @rem ターゲットのフルパス set myPath=%chromeExePath%%myProfile% @rem "Profile 13"のブラウザを開く start "" /max %myPath%
そして、実行。
…あれ、変わらない。
😫「なんでよーーーパスは合ってるじゃんーーーーー。」
小一時間調べてみても、それらしき記事が見つけられず…
その頃のつぶやき。
バッチファイルからユーザーごとにChrome起動は出来ないのかな🤔
— yuricks7 (@yuricks7) 2019年7月23日
chrome.exeは開けるけど” —profileなんちゃら”は何も起きない…#はじめてのバッチファイル
「私にはバッチ処理なんてまだ早いか…」と、この時は諦めた。
ドヤ顔でこんな記事も書いたくせに…
その時は突然に!
しばらく放置していたところ、最近シンノユウキさんのブログ*1を拝見していてやっと気づいた。
--profile-directory
も含めてパスだと思ってたけど、これは「パス」ではなく「オプション」なんだ。
だから、「文字列」として変数に格納すると、動かない。
(ただ、「何のオプション」なのかはまだ良く分かってない…
--profile-directory
はパスのオプション?start
コマンドのオプション?)
改めてさっきのエラーメッセージを見てみると、C:\~.exe
やProfile 13
に""
がついてないことに気付いた。
C:\
からProfile 13
まで1つの文字列になっちゃってるってことかー。
というわけで、正しくはこう書くみたい。
@rem Chromeのパス set chromeExePath="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" @rem ユーザーのプロファイル番号 set myProfile="Profile 13" @rem "Profile 13"のブラウザを開く start "" /max %chromeExePath% --profile-directory=%myProfile%
実行してみると…
😭「できたーーーーーーーー!」
これで好きなユーザーでChromeを開ける!!
Slackも追加したいんだけどな…
「開くことは出来る」けど…
日課の予定チェックにSlackを使っているので、これもスタートアップにしたい。
…と思ったら、実行するユーザーによっては意図通りに動いてくれない。
Slackのウィンドウを開いてくれるのは確かなんだけど、コマンドプロンプトはCreating Slack Application
と出たまま、ウィンドウが閉じない。
「どこかで失敗してるのかな?」と思いつつ、「まぁ、クリック1回くらいなら…」と手動でウィンドウを閉じると、つられて(?)Slackも閉じられてしまう…
🤔(やっぱり何か途中なんだろうなぁ…)
😨(毎日強制終了してるようなのもちょっと怖いなぁ…)
🙄(それに毎回手動で閉じては開き直すってのも…意味ないしめんどくさいな…)
「管理者ユーザー」ならちゃんと開いて終了してくれるんだけどな。
今のところ、これと「それ以外」の2件しかサンプルが無いけど。
またあとで考える。
そういうわけで、ちゃんと起動できないユーザーの分はスクリプトで起動するのを一旦諦めて、また時間を置いて考えることにした。
とりあえずスタートアップ
フォルダにショートカットを戻して、元通り勝手に開いてもらおう。
コードもコメントアウトしておいて…
REM rem Slack.exe REM START "" /max "C:\Program Files\Slack\Slack.exe" REM call :sleep
不本意だし消化不良だけど、たぶんまた知識が足りないんだろうな。
管理者で問題なく開けるんなら権限の問題だったりするのかなぁ…
このシリーズについて
バッチファイルの書き方を自分なりに勉強しています。
もし間違いや改善のアイディア等ありましたら、コメント欄やTwitter等でご意見いただけたら嬉しいです。
連載目次
*1:いつもありがとうございます!
私のための記事でも何でもありませんが笑、何故かとてもタイミングが良いのです!!