ゆるおたノート

Tomorrow is another day.

【バッチファイル】何やらSTARTできてないモノがあるような…?

前回、バッチファイルの作成について書きました。

【バッチファイル】指定した順番にアプリケーションを開くスクリプトを書いてみた - ゆるおたノート

ただ、分からないことがあって、「動く」ものが出来るまで3ヶ月も掛かってしまいました。
…こういうのは独学あるあるでしょうか。

まだ全部は解決してないですが、分かったことを記録しておこうと思います。

Google Chromeの便利機能も自動化するには…?

Chromeのユーザーごとに開きたい

Google Chromeでは、アカウントごとにブラウザを分けて使うことが出来る。
(今の仕事で知りました)

プロフィールを使用すると、自分の Chrome 情報(ブックマーク、履歴、パスワード、その他の設定)のすべてを他のユーザーと別々に保持することができます。

次の場合はプロフィールの使用をおすすめします。

複数の人とパソコンを共有する。
仕事用と個人用などで別々のアカウントを使用する。

Chrome を他のユーザーと共有する | Google Chromeヘルプ

これを利用してChromeの「ユーザー」を指定して起動しようとしたら、少し苦労した。

パスを確認してみる

まず何も考えずChromeのパスを指定して開くと、最後に開いていたユーザーとしてブラウザを起動する。

start "" /max "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

これはこれで便利なのだけど、「このアカウントで!」って出来るともっと嬉しい。

そこで、試しに適当なユーザーのショートカットで右クリックして、プロパティを見てみる。

ユーザー別ショートカットの「リンク先」を確認する

--profile-directoryのあとの部分に、ユーザーを特定する情報が入っているらしい。

デフォルトのユーザーは、画像のようにDefault
その後、ユーザーを追加するごとにProfile 1Profile 2Profile 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%

実行してみると…
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --profile-directory=Profile 13'が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。
怒られた。

「♪そこに~ファイルあ~りません~残ってなんか~いません~」ですと??
…分かる人からしたら、この時点で「ダメだこいつ」だと思う。

🤔「あ、これじゃ開けないんだ…」

🤔「パスは…ん、合ってるな?」

🤔「合ってるのに開けないの???なぜ???」

少し考えて、分解して変数にしてみた。

@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%

そして、実行。
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --profile-directory=Profile 13'が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。
…あれ、変わらない。

😫「なんでよーーーパスは合ってるじゃんーーーーー。」

小一時間調べてみても、それらしき記事が見つけられず…

その頃のつぶやき。

「私にはバッチ処理なんてまだ早いか…」と、この時は諦めた。
ドヤ顔でこんな記事も書いたくせに…

その時は突然に!

しばらく放置していたところ、最近シンノユウキさんのブログ*1を拝見していてやっと気づいた。

--profile-directoryも含めてパスだと思ってたけど、これは「パス」ではなく「オプション」なんだ。
だから、「文字列」として変数に格納すると、動かない。

(ただ、「何のオプション」なのかはまだ良く分かってない…
--profile-directoryはパスのオプション?startコマンドのオプション?)

改めてさっきのエラーメッセージを見てみると、C:\~.exeProfile 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%

実行してみると…

Profile 13で開けた~

😭「できたーーーーーーーー!」

これで好きなユーザーでChromeを開ける!!

Slackも追加したいんだけどな…

「開くことは出来る」けど…

日課の予定チェックにSlackを使っているので、これもスタートアップにしたい。
…と思ったら、実行するユーザーによっては意図通りに動いてくれない。

Slackのウィンドウを開いてくれるのは確かなんだけど、コマンドプロンプトCreating Slack Applicationと出たまま、ウィンドウが閉じない。

`Creating Slack Application`と出たまま…

「どこかで失敗してるのかな?」と思いつつ、「まぁ、クリック1回くらいなら…」と手動でウィンドウを閉じると、つられて(?)Slackも閉じられてしまう…

🤔(やっぱり何か途中なんだろうなぁ…)

😨(毎日強制終了してるようなのもちょっと怖いなぁ…)

🙄(それに毎回手動で閉じては開き直すってのも…意味ないしめんどくさいな…)

「管理者ユーザー」ならちゃんと開いて終了してくれるんだけどな。
今のところ、これと「それ以外」の2件しかサンプルが無いけど。

またあとで考える。

そういうわけで、ちゃんと起動できないユーザーの分はスクリプトで起動するのを一旦諦めて、また時間を置いて考えることにした。
とりあえずスタートアップフォルダにショートカットを戻して、元通り勝手に開いてもらおう。

コードもコメントアウトしておいて…

REM rem Slack.exe
REM START "" /max "C:\Program Files\Slack\Slack.exe"
REM call :sleep

不本意だし消化不良だけど、たぶんまた知識が足りないんだろうな。
管理者で問題なく開けるんなら権限の問題だったりするのかなぁ…

このシリーズについて

バッチファイルの書き方を自分なりに勉強しています。

もし間違いや改善のアイディア等ありましたら、コメント欄やTwitter等でご意見いただけたら嬉しいです。

連載目次

  1. 【バッチファイル】指定した順番にアプリケーションを開くスクリプトを書いてみた - ゆるおたノート

  2. 当記事【バッチファイル】何やらSTARTできてないモノが…? - ゆるおたノート


*1:いつもありがとうございます!
私のための記事でも何でもありませんが笑、何故かとてもタイミングが良いのです!!