Kalsarikannint

お問い合わせ

サイト内検索

Windowsバッチファイルの作成Tips|タイトル設定と管理者権限の自動昇格

こんにちは。Kalsarikannintのフロントエンド担当・daiです。

最近、社内の定型業務をWindowsバッチファイル(.bat)で自動化する機会があったんですが、使ってみると「なんか微妙に使いにくいな」と感じる場面がちょこちょこ出てきました。

少し工夫するだけで運用時のストレスがぐっと減ったので、今回はそのTipsを2つご紹介しようと思います。

そもそも、どんな「使いにくさ」が起きていたのか

まず前提として、僕が直面していた状況はこんな感じでした。

  • 複数のバッチファイルを同時に動かしていたので、タスクバーが「コマンドプロンプト」だらけになっていた
  • 管理者権限が必要な処理を含むバッチを、うっかりダブルクリックで起動してエラーになってしまっていた

どちらも「仕組みを理解していれば防げるミス」なんですが、毎回気をつけるのも面倒ですよね。なので、バッチファイルの書き方自体で対処できないか考えてみました。

1. 実行中のバッチを識別しやすくする「title」コマンド

困っていたこと

複数のバッチファイルを並列で実行していると、タスクバーが「コマンドプロンプト」という名前のウィンドウで埋め尽くされてしまいます。

どれがどの処理をしているのか一切わからないんですよね。誤って関係ないウィンドウを閉じてしまったり、「あれ、このバッチ終わったっけ?」と二度見したり…。

解決策:1行目に title コマンドを入れる

バッチファイルの冒頭に title コマンドを書くだけで、ウィンドウのタイトルバーに任意の名前が表示されるようになります。

@echo off
title 【実行中】ログ転送バッチ(サーバーA)

たったこれだけです。タスクバーやウィンドウのタイトル部分に指定した文字列が表示されるので、複数起動していても一目でどれが何の処理かわかるようになります。

ちなみに、処理のフェーズに応じてタイトルを動的に変えることもできます。

@echo off
title 【準備中】バックアップ処理
:: 前処理...

title 【実行中】バックアップ処理
:: メイン処理...

title 【完了】バックアップ処理
echo 処理が完了しました。
pause

こうしておくと、「今どこまで進んでいるか」がタスクバーを見るだけでわかるので、特に時間のかかる処理のときに重宝します。

2. 管理者権限への自動昇格スクリプト

困っていたこと

システム環境変数の書き換えや、特定のシステムディレクトリへのファイル操作など、管理者権限が必要な処理を含むバッチファイルを使うとき、毎回「右クリック → 管理者として実行」をしていました。

これ、地味に手間なんですよ。しかも慣れてくると、うっかり普通にダブルクリックしてしまって、処理が途中で失敗する…という事故が起きやすくなります。

解決策:自分自身を管理者として起動し直すコードを先頭に入れる

バッチファイルの冒頭に「権限チェック → 足りなければ自分を昇格して再起動」というコードを仕込んでおくと、ダブルクリックするだけで自動的にUAC(ユーザーアカウント制御)のダイアログが表示されるようになります。

@echo off
:: 管理者権限のチェック
openfiles >nul 2>&1
if %errorlevel% neq 0 (
    echo 管理者権限がありません。昇格して実行し直します...
    powershell -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

:: ここから管理者権限が必要な処理を記述
title 管理者実行:システム設定更新
echo 現在、管理者権限で実行されています。
pause

仕組みをざっくり解説

少し補足しておきます。ポイントは3つです。

openfiles コマンドで権限をチェックする

openfiles は管理者権限がないと実行に失敗するコマンドです。これを利用して、%errorlevel%(コマンドの終了コード)が 0 でなければ「管理者権限なし」と判断しています。>nul 2>&1 は出力を捨てるおまじないですね。

② PowerShell の Start-Process で自分自身を昇格起動する

-Verb RunAs というオプションを指定することで、「管理者として実行」する動作をスクリプトから呼び出せます。%~f0 は「このバッチファイル自身のフルパス」を表す特殊変数です。

③ 元のプロセスは exit /b で終了させる

昇格した新しいプロセスが起動したあと、権限のない元のプロセスはそのまま終了させます。これをしないと、ウィンドウが2つになってしまうので注意です。

小さな工夫で「めんどくさい」を減らす

今回ご紹介した Tips をまとめると、こんな感じです。

やりたいこと解決策
複数バッチを識別したいtitle コマンドでウィンドウ名を設定
毎回の「管理者として実行」を省きたい冒頭に自動昇格スクリプトを追加

どちらも数行追加するだけで導入できます。テンプレートとして手元に持っておくと、次回バッチを書くときにコピペするだけで済むので、ぜひ活用してみてください。

運用時の視認性や実行の手間を少し意識しておくだけで、日々のちょっとしたストレスがかなり減ります。手作業でやるにはめんどくさい処理のためにバッチを書くと思うので、バッチを実行するときにめんどくさいことが増えたら本末転倒かなと思っています。なので、バッチは快適に実行できることを念頭に書くことを意識しています。

今後もまた何か便利なTipsがあれば書いていこうと思います。

Author dai

地方に住みながら、フルリモート情シスおじさんしてます。
フロントエンド開発とkintoneアプリのカスタマイズやプラグイン開発が得意分野です。
好きなビールは一番搾り。

【レビュー】UGREEN エルゴノミクスマウス

こんにちは。Kalsarikannintのフロントエンド担当・daiです。 僕はPCを使う時は断然トラックパッド派です。特にメインPCはMacbook Proですが、トラックパッドの使い心地でMacを選んでるまであるくらい(もちろん他にも理由あるけど)。 そんな僕ですが、この度マウスを購入しました。 出典:Amazon 今回は、トラックパッド好きの僕がマウスを導入した経緯と、実際に使ってみた感想を正直に書いていきます。 僕の普段の作業環境 まず前提として、僕のトラックパッド愛 作業環境を説明しておきます。 家で作業する際は、MacBookの内蔵キーボードの上に Huntsman Mini という60%キーボードを乗せる、いわゆる「尊師スタイル」で使っていて、ポインタ操作は基本的にMacBookのトラックパッドです。 「キーボードの上にキーボード?」と思われるかもしれませんが、これが意外と快適でして。Huntsman Miniの軽快な打鍵感を楽しみつつ、トラックパッドだけはMacのものをそのまま使える、という構成です。 Macのトラ
review

【ダイナミックマイク】FIFINE K688CT 雑に扱えるリモートワークの身だしなみ【レビュー】

こんにちは。Kalsarikannint のフロントエンド担当・dai です。 フルリモートで勤務していると、Webミーティングが唯一のみんなとの接点になるので、少しでも音質の良いマイクで臨みたいと思い FIFINE K688CT というマイク を購入したのでレビューしていきます! 出典:Amazon 「音質が劇的に向上した!」という話ではなくて、どちらかというと「安心感を買った」という感じです。 そのあたりも含めて、正直に書いていきますね。 最低限ちゃんとしたい リモートワークをしていると、「自分の声、ちゃんと聞こえてるんだろうか?」と、気になることがありませんか? 僕は配信者でも YouTuber でもないので、毎日マイクを使うのは Web ミーティングのときだけです。だからこそ、「こだわりたいわけじゃないけど、雑にもしたくない」という、かなり中途半端な気持ちを抱えていました。 その悩みに、FIFINE K688CT がかなりぴったりはまってくれました。 コンデンサーマイクを使っていた時期の話 最初に買ったのはコンデンサ
review

日立のスティック型掃除機レビュー|からまんブラシは “からまんくない”【PV-BL1A2】

こんにちは。Kalsarikannintのフロントエンド担当・daiです。 我が家の掃除機を買い替えたのでレビューしていきます。新たに購入したのは 日立 コードレススティッククリーナー PV-BL1A2。乗り換え前は 山善 ZSC-L121 を使っていました。 使ってみてわかった「良かった点」と「正直ちょっと違った」という点、両方まとめてみます。 買い替えの経緯 うちの環境を先に整理しておくと、 ロングヘアの女性が2人 日常的な掃除がメインで、大掃除のような使い方はあまりしない こういう条件だと、掃除機のブラシへの髪の毛の絡みって本当に積み重なるんですよね。山善を使っていたときも決して悪い製品ではなかったんですが、「掃除のたびにヘッドに巻き付いた髪の毛を外す」という作業が面倒になってきました。 そんなときに見つけたのが日立の PV-BL1A2 でした。「からまんブラシ」という名前の機能が搭載されていて、吸引力もワンランク上という評判。これは試してみる価値があるかなと思い、購入に至りました。 使ってみて良かった点
review