番号欠番チェックバッチスクリプト
ファイル名の末尾に含まれる番号を取得し、連番として欠番になっている番号をチェックするバッチスクリプトを作成しました。
ファイルが多数ある場合に、どの番号が欠けているか一目で分からなくなることを防ぐため
スクリプトの概要
このスクリプトは、現在のディレクトリ内にある .txt
ファイルのファイル名から、末尾に付与された番号(アンダースコアの後ろの部分)を抽出します。
抽出した番号をもとに、指定した連番(ここでは 1~99)の中で存在しない番号(欠番)を検出し、結果を表示します。
バッチスクリプト
@echo off
setlocal enabledelayedexpansion
REM 連番の数字を保持する変数(空白区切り)
set "numbers="
REM 現在のディレクトリ内の *.txt ファイルを処理
for %%F in (*.txt) do (
REM ファイル名(拡張子を除く)を取得
set "filename=%%~nF"
REM ファイル名にアンダースコアがある場合、後ろの部分を抽出
for /f "tokens=2 delims=_" %%N in ("!filename!") do (
set "num=%%N"
REM 抽出した部分が数字のみか確認
for /f "delims=0123456789" %%X in ("!num!") do (
if "%%X"=="" (
set "numbers=!numbers! !num!"
)
)
)
)
REM 存在する番号を配列として記録
for %%N in (!numbers!) do (
set /a num[%%N]=1
)
REM 1から99までの連番をチェックし、欠番を抽出
set "missing="
for /l %%I in (1,1,99) do (
if not defined num[%%I] (
set "missing=!missing! %%I"
)
)
REM 結果を表示
if defined missing (
echo 足りない番号:%missing%
) else (
echo 連番はすべて揃っています。
)
pause