ノンプロ向けの便利なバッチファイルの使い道（業務効率化）

プログラマーの方は、当然バッチファイルはご存知だと思います。

Windowsバッチファイルは、コンピュータに対する一連の指示（コマンド）を自動化するためのファイルです。普段行っている操作を効率化し、繰り返しの作業を簡略化できる便利なツールです。拡張子は .batで、Windows上で直接実行できます。
コマンドプロンプトを、コードを手入力せずに、バッチファイルのダブルクリックで実行するため、非常に便利です。

なお、会社の共有フォルダでは利用が制限されている場合もありますので、その点はご注意ください。
ただし、共有フォルダでは利用が制限されている場合でも、少なくとも自分のPCのドキュメントフォルダ等のローカルな環境では利用可能だと思います。

この記事では、事務職等のノンプログラマー向けに、バッチファイルの活用用途のアイディアを主に紹介します。（具体的な構文等については、他の方の記事をご参照ください。）

# バッチファイルの基礎知識
この記事で紹介しているコードや、ネットで紹介されているコードで利用したいものを、メモ帳（テキストファイル）にコードを貼り付けして保存します。

![01_テキストファイルにコード貼り付け.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/ec265037-cf20-43d0-819a-b361349e0d11.png)

保存の際にエンコードをANSIにして保存します。（コメント部分等に日本語を含む場合に、ANSIにしないと文字化けするため。）

![02_保存時のエンコード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/74ef2d2d-aa67-4225-948a-aa689f6bc5ad.png)

拡張子を「txt」から「bat」へ変更します。（エクスプローラーで拡張子を表示する設定にしていない人は、拡張子を表示する設定に変更にしてから、この作業を行ってください。）

![04_拡張子をbatに変更.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/f17e3ed5-3dd5-45d9-a57b-f4dad70cfefd.png)


ポップアップで、「拡張子を変更するとファイルが使用できなくなる可能性があります。」と表示されますが、「はい」と選択します。

![05_ポップアップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/e5794742-438f-49dd-bc6b-89fbe32bd006.png)

テキストファイルがバッチファイルに変更しました。下記の歯車のようなアルコンや「種類」の表示が目印です。

![06_アイコンがバッチファイルに変更した.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/7e306845-0732-4608-b37f-d6d8b60ad606.png)

これで、利用の準備が整いました。
それでは、実際にバッチファイルを利用してみましょう。

# 複数URLをまとめて開くと利用方法
特定の作業時に複数のURLを開く必要がある場合があると思います。
毎日、常に使用するホームページであれば、MicrosoftEdge等で起動時に常に開く設定を登録すればよいでしょう。

しかし、特定の作業時のみに必要な場合は、下記のようにURLを列挙したバッチファイルをデスクトップ等に置いておき、ダブルクリックして一括でURLを開けるようにしておくと便利です。（サンプルでは単に各検索エンジンサイトのURLを上げています。）

```bat:Windowsバッチファイル
@echo off
start https://www.google.co.jp/
start https://www.yahoo.co.jp/
start https://www.msn.com/ja-jp
```
バッチファイルの実行方法は、バッチファイルダブルクリックすることによって起動します。通常のファイル（Excel等）は、ダブルクリックでファイルの中身を確認できますが、バッチファイルの場合は、コマンドプロンプトが実行してしまいますので、ご注意ください。

![07_バッチファイルダブルクリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/af78ed29-52ab-4132-ba06-e3d886b28bb2.png)

特に、他の人が作成した中身不明のバッチファイルを、安易にダブルクリックしてしまわないように注意しましょう。
実行前に中身を確認したい場合には、下記のいずれかの方法でバッチファイルの中身を確認可能です。

+ 拡張子を「bat」から「txt」に変更した上で、テキストファイルにする
+ バッチファイルを選択して右クリック→「メモ帳で編集」でファイルを開く

![08_右クリックで編集.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/8dc52889-d8b3-44b6-8727-13629c123225.png)

後者の右クリックで編集する方法なら、拡張子変更せずに、中身の確認や編集も可能です。

なお、この特定のURLを一括起動するバッチファイルは、バッチファイル自体の保存場所がどこでも同じ挙動になりますので、保存場所は気にする必要がありません。（逆にいうと、これから紹介するバッチファイルには、バッチファイル自体の保存場所によって挙動が異なるものがあります。）

# 空のフォルダを削除する
バッチファイルのあるフォルダ内にある、中身がないフォルダを削除する。

```bat:Windowsバッチファイル
@echo off
setlocal
rem 直下の空のフォルダ削除を削除（サブフォルダが空でも無視する。）

:: バッチファイルがあるフォルダを取得
set "target_dir=%~dp0"

:: 直下のフォルダのみを処理
for /d %%d in ("%target_dir%*") do (
    rd "%%d" 2>nul
)
```

こちらは、バッチファイルのあるフォルダが対象になります。
バッチファイルのあるフォルダと同じ階層に、空のフォルダがある場合に、中身のないフォルダを一括で削除します。

![09_空フォルダ削除バッチ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/04205634-934c-42ab-a5f8-73c8b1c4447f.png)

空のフォルダのみ削除されました。（残ったファイルは、Excel等のファイルはないのですが、中身に更に空のフォルダがあるので、削除されずに残っています。）

![10_空フォルダ削除バッチ実行後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479442/1610ad87-1180-40a6-889d-0419abc5575c.png)

# フォルダ内にあるファイル名称を変換する
特定のフォルダ内にあるファイル名を一括で変更したい場合があると思います。例えば、ファイル名の先頭に「【過去】」をつけたいとかです。（過去資料のため後日削除予定だが、参照用に残しておきたい。）

下記のバッチファイルは、バッチファイルのあるフォルダ内にあるファイル名を一括でリネームします。

```bat:Windowsバッチファイル
@echo off
rem 目的：複数ファイルの一括リネーム　※ファイル名の先頭に×をつける

setlocal enabledelayedexpansion

REM ファイル名の先頭に追加する文字列を設定
set "prefix=【過去】"

REM 実行バッチファイル自身の名前を取得
set "batch_file=%~nx0"

for %%f in (*) do (
    REM バッチファイル自身はスキップ
    if /I not "%%~nxf"=="%batch_file%" (
        REM ファイル名の先頭に設定した文字列を追加
        rename "%%f" "%prefix%%%f"
    )
)

endlocal
```
アレンジしたい場合は、「【過去】」の部分の部分を変更すればよいです。
文言を変更する以外に、同種のアレンジ例は下記のようなものがあります。

+ 先頭ではなく、ファイル名の末尾の方を変更する

+ ファイル名に含む、半角スペースや全角スペースを「_」へ置き換える
※半角スペースや全角スペース含む場合に、圧縮が失敗することがあるため。

生成AIにバッチファイルを作成してもらうことも可能なので、アイディア次第で、活用用途がそこそこあります。

# 特定のフォルダ名称のフォルダをまとめて作成する
月名（１月、２月、・・・）等のフォルダをバッチファイルで一括で作成することが可能です。こうしたフォルダの作成は、手作業で行うのに非常に面倒です。
他の方の記事ですが、下記の記事で具体的な方法が紹介されていますので、ご確認されてみてください。
https://forest.watch.impress.co.jp/docs/serial/offitech/1438927.html

# 複数のPDFをまとめて開く
バッチファイルと同じフォルダにあるPDFファイルをまとめて開きます。
ただし、これはバッチファイルを利用しなくても、開きたいPDFファイルをShiftを押しながら複数選択して、右クリックで「開く」を押せばまとめて開くことができます。

```bat:Windowsバッチファイル
@echo off
rem バッチファイルと同じフォルダ内にあるPDFファイルを一括で開く
setlocal enabledelayedexpansion

rem PDFファイルを格納しているディレクトリを取得
set "currentDir=%~dp0"

rem PDFファイルをループで処理
for %%F in ("%currentDir%*.pdf") do (
    start "" "%%F"
)
```

以上、Windowsバッチファイルの用途について、いくつか例をご紹介しました。いかがでしたでしょうか？
作業の時短につながり、少しでもお役に立てれば幸いです。