スタートアップバッチとは
Windows起動時に自動的に実行される処理のことです。
例えば、必ず見るサイトがある場合や実行したいアプリがある場合のほか、
ネットカフェなどで共通の設定に戻したり、不要ファイルを自動削除したい時に有効です。
具体的には、下記フォルダに.bat
や.vbs
形式のテキストファイルを配置することで実行します。
また、実行したいアプリ(.exe
)へのショートカットを置くとそのアプリが実行されます。
※ショートカットの先は.bat
や.vbs
でも問題ありません。
■ 全ユーザー共通のスタートアップフォルダ ※配置に管理者権限が必要
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
■ ログインしているユーザーのスタートアップフォルダ
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
※%USERNAME%を使用することで、ログインしているユーザー名に置き換わります。
誰でも扱える便利さゆえに複雑化しやすい欠点
上記の仕様を用いて、スタートアップフォルダにサーバーへのショートカットを作成し、
サーバーにバッチファイルを用意することで数百台のPCを1つのバッチでコントロールしています。
例えば、アプリのsetting.jsonなどを各PCのローカル配下に存在するアプリ設定ファイルに上書きするなどができるため、1台1台設定せずとも同一設定にできるため工数がとても削減できて便利でした。

しかし、バッチの特性上、非エンジニアでも触れることができるため、複数の職種を問わない人間が関わることもあり、WebサイトやWebアプリのコードと比べるとスピード重視な傾向があります。
そのため、適切かつ一貫した管理が難しくなりがちです。
今回は、それらのバッチを捨てて一新した経験から、
今後バッチ運用をする時に、気をつけるべき点を紹介いたします。
作成・運用で気をつけるべきこと
それでは本題です。
機能毎にバッチを分けることを意識する
ファイルが複数になっても機能ごとにバッチを作成した方が良いです。
例えば、起動時処理.bat
というファイルがあり、内容としてデスクトップのファイル削除
、ゴミ箱のファイル削除
、起動時にセキュリティソフトの更新と実行
、常駐ツールの設定を自動反映
、業務サイトをブラウザで開く
という処理が含まれており、似たような名前のバッチがいくつかあるとします。
この場合、変更が発生すると名前でどれを編集すべきかの判断が付け難く、また1ファイルの処理も膨大なため、どこを編集すべきかが判断付けにくいのです。
そのため、処理内容ごとにバッチファイルを分ける方が変更時に管理しやすいです。
(特に最初は少ないからまとめてしまいがちだけど、気がつくと膨らんでいる)
実行順などの関係でどうしても1ファイルに集約したい場合は、各バッチを読み込むバッチを1つだけ作り、
そこから読み込むのが良いかと思います。
以下は、順に他のバッチを実行するバッチのサンプルです。
@echo off
call sample1.bat
call sample2.bat
call sample3.bat
※callコマンド
ではなくstartコマンド
を使用することで、複数のバッチファイルを同時に実行することもできます。
急にサーバーが壊れても問題の少ない処理を心がける
サーバーや、NASにバッチファイルを配置する場合、何よりも恐ろしいのがそれらに不調が発生した場合、バッチが処理されないことに起因してPCが利用できない状態になってしまうことです。
それらを防ぐためにバッチの処理にて、
① サーバーからローカルにバッチファイルをコピー、出来ない場合は②へ
② ローカルでバッチファイルを実行
とすることで、壊れても最新の状態ではないが前回利用できていた状態でPCを使うことが出来ます。
スタートアップフォルダの違いとPC環境を理解する
冒頭で書いたように、ログインユーザー単一のスタートアップフォルダと、
全ユーザー共通のスタートアップフォルダは異なります。
また、ログインユーザーのスタートアップはそのユーザーでログインしないと有効ではないですが、
全ユーザー共通のスタートアップは誰がログインした場合であれ、有効となります。
が、PC利用者が管理者権限あると思っていたら、ない人もいたりすると、
そもそも最初に全ユーザー共通のスタートアップにバッチを追加するのが難しくなります。
そのため、PC環境を理解した上でどのようにバッチを動かしていくか設計する必要があります。
お引越しの時は既存の全バッチを削除しない
旧バッチから新バッチに処理を変更するときは、
どこかのタイミングで旧バッチの処理を無効化する必要がある訳ですが、
単純に旧バッチへのショートカットを消してしまうと、そのPCのスタートアップフォルダに
ファイルが何もなくまた手動で新バッチを導入するしかなくなります。
そのため、ショートカットの読み先を新しいバッチに変更するか、
削除と同時に新バッチへのショートカットを追加することをオススメします。
Gitにファイル差分を残す
こういったサーバーはおおよそ一般利用者からアクセスしやすい環境にあり、
それを見た利用者がファイルを移動させてしまったり、自分自身がバッチ改修時に
処理をミスして記述してしまう可能性もあります。
そのため、Gitなどのファイル管理ツールを使い、万が一に備えてバックアップを取りましょう。
おわりに
組織として働く上では間違いなく重要で、便利なバッチファイルですが、
エンジニアが関わることは少なく、軽視されやすい傾向にあると言えます。
ただ、活用次第によっては業務効率化にダイレクトに影響を与えるため、
内部の工数削減によって成果を出したい方は、利用を考えてみるのも良いと思います。
それでは。
おまけ(先人達の素晴らしい記事)