@echo off rem / ################################################## rem / # title rem / # description rem / # Create Date : yyyy/mm/dd rem / # Edited Date : yyyy/mm/dd rem / # Version. 0.0.0 rem / ################################################## :MAIN rem / process start rem コマンドプロンプトで扱う文字コードを入力ファイルに合わせてUTF-8に変更する chcp 65001 set /P INPUT_FILE ="input file name and press Enter key(when cancel, no input and press Enter key) >" if "%INPUT_FILE%" == "" ( exit /b 1 ) if not exist "%INPUT_FILE%" ( echo Filename(%INPUT_FILE%)notFound pause exit /b 9 ) set /P COMP_DATE="input date(yyyymmdd) and press Enter key(when no input, date is Today) >" if %COMP_DATE% == "" ( set COMP_DATE=%date:/=% ) set NOWDAY=%date:/=% set NOWTIME=%time: =0% set NOWTIME=%NOWTIME::=% set NOWTIME=%NOWTIME:.=% set NOW=%NOWDAY%%NOWTIME% set LOG_FILE=%INPUT_FILE%_%NOW%.log set OUT_FILE=%INPUT_FILE%_%NOW%.txt echo START %date% %time%> %LOG_FILE% echo Input File : >> %LOG_FILE% echo %INPUT_FILE% >> %LOG_FILE% echo Compare Date : >> %LOG_FILE% echo %COMP_DATE% >> %LOG_FILE% rem 数字で始まる行のみ抽出 set REGEX_KEYWORD="^[0-9]*.*" findstr /R /C:%REGEX_KEYWORD% "%INPUT_FILE%" > %OUT_FILE%.temp for /f "tokens=1-6 delim=^," %%a in (%OUT_FILE%.temp) do ( setlocal ENABLEDELAYEDEXPANSION if not "%%f" == "" ( set CREATEDATE=%%f ) else if not %%e == "" ( set CREATEDATE=%%e ) else ( set ERROR_MSG="Unexpected Data" goto :ERROR ) set CREATEDATE=!CREATEDATE:^|=! rem 過去データの出力 if !CREATEDATE! LSS !COMP_DATE! ( if not "%%f" = "" ( echo %%a^,%%b^,%%c^,%%d^,%%e^,%%f >> !OUT_FILE! ) else if not "%%e" == "" ( echo %%a^,%%b^,%%c^,%%d^,^,%%e >> !OUT_FILE! ) ) setlocal ) del %OUT_FILE%.temp echo Extracted row count : >> %LOG_FILE% type "%OUT_FILE%" | find /C /V "" >> %LOG_FILE% echo Output File : >> %LOG_FILE% echo %OUT_FILE% >> %LOG_FILE% echo END %date% %time%>> %LOG_FILE% echo; type %LOG_FILE% echo; echo Done pause rem / process end :END exit /b 0 :ERROR echo %ERROR_MSG% echo %ERROR_MSG% >> $LOG_FILE$ pause exit /b 9