今時 MS-DOS のバッチファイル(.bat)を使う機会があったので備忘録を兼ねてメモ。

今日の日付を取得

バッチファイル実行時の日付を取得するには、以下のようにすれば良い。

@echo off

set YYYY=%date:~-10,4%
set MM=%date:~-5,2%
set DD=%date:~-2,2%

echo 今日は %YYYY% 年 %MM% 月 %DD% 日です。

なお、バッチファイルを作成する際は、文字コードを Shift JIS、改行コードを CR+LF にする必要がある。

head

UNIX コマンドの head のように、テキストファイルの先頭数行を表示するには、以下の内容を head.bat として保存する。

@echo off

setlocal enabledelayedexpansion

SET /a counter=0

for /f "usebackq delims=" %%a in (%1) do (
if "!counter!"=="%2" goto exit
echo %%a
set /a counter+=1
)

:exit

使い方は、

head.bat SomeFile.txt 10

のように、表示したいファイル名と行数を引数で渡す。なお、他のバッチファイルの中で head.bat を呼びだす際は、

call head.bat SomeFile.txt 10

というように call コマンドを使う。

tail

head とは逆に、テキストファイルの最後の部分を表示したい場合(UNIX の tail コマンドに相当)は、以下の内容を tail.bat として保存する。

@echo off

for /F "tokens=1,2,3 USEBACKQ" %%A in (`find /V /C "" %1`) do set FL=%%C
set /A TAIL=%FL%-%2
more +%TAIL% %1

使い方は、

tail.bat SomeFile.txt 10

のように、表示したいファイル名と行数を引数で渡す。