起動回数をカウントして表示する
@echo off setlocal rem カウンタープログラム rem ファイルの数字をカウントアップして表示する rem 日付が変わったらカウントをリセットする rem ★カウンターファイル名 set FILENAME=count.txt rem ■ファイル日付が今日じゃないならカウンターリセット for %%i in (%FILENAME%) do set D=%%~ti set FILEDATE=%D:~0,10% if not "%FILEDATE%"=="%date%" echo 0 > %FILENAME% rem ■ファイルの数値をカウントアップ set /p COUNT=<%FILENAME% set /a COUNT=COUNT+1 echo %COUNT%>%FILENAME% rem ■カウンター表示 echo %COUNT%
for %%i in (%FILENAME%) do set D=%%~ti
ファイルの日付を取得するイディオム
変数 %%i からファイルの日時(YYYY-MM-DD hh:mm)が取り出せる
set FILEDATE=%D:~0,10%
変数の文字列を分割。ここでは先頭10文字を取得する。
詳細は set /? で見よう
if not "%FILEDATE%"=="%date%" echo 0 > %FILENAME%
文字列比較。 notで否定。 変数は""で囲う。
詳細は if /? で見よう
リダイレクトはif文全体ではなくthen節にのみかかる。
set /p COUNT=<%FILENAME%
set /p 変数名=[プロンプト文字列] で本来はユーザからの入力をとる。
ファイルをリダイレクトすることでファイル読込みとして使用。
set /a COUNT=COUNT+1
変数で数値演算したいときは set /a を使う
このときだけは%%で囲わなくてもいい
echo %COUNT%>%FILENAME%
ファイルに出力する。
%COUNT% > %FILENAME% のようにリダイレクト記号の前後にスペースをあけるとファイルにも空白が出力されるので注意する。(この例の場合空白が入っても問題はないが)
かといって %COUNT%> %FILENAME% のように片方だけスペース入れるとエラーになる