ゆるおたノート

Tomorrow is another day.

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

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

www.yuru-wota.com

ただ、分からないことがあって「動く」ものが出来るまで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

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

*1:私のための記事でも何でもありませんがいつもありがとうございます!