@echo off title %~nx0 if exist openssl\openssl.exe ( set exe_openssl=ok path=%cd%\openssl;%path% ) if exist openssl.exe set exe_openssl=ok if not defined exe_openssl GOTO NOFILE REM ##################################### REM ### ASK REM ##################################### :ASK set sha1file= cls echo: echo ============================================================== echo: echo sha1ファイルを指定 echo: echo *** 中断するには 99 を入れてEnter *** echo ============================================================== echo. set /p sha1file= [ファイル名 , 99] : echo. for /f "usebackq delims=" %%I in ('%sha1file%') do set sha1file=%%~I if "%sha1file%"=="99" GOTO END if "%sha1file%"=="" GOTO ASK if not exist "%sha1file%" ( echo: echo ============================================================== echo ! %sha1file% は存在しません! echo ============================================================== GOTO WAIT ) for /f "delims=" %%I in ("%sha1file%") do set dir_test=%%~aI if "%dir_test:~0,1%"=="d" ( echo: echo ============================================================== echo ! %sha1file% はディレクトリどす! echo ============================================================== GOTO WAIT ) for /f "delims=" %%I in ("%sha1file%") do ( set "dirpath=%%~dpI" ) GOTO Check :WAIT echo: echo *** 何かキーを押すと戻ります *** pause >nul GOTO ASK REM ##################################### REM ### Check REM ##################################### :Check echo: echo ============================================================== echo ! 計算しまする... ! echo ============================================================== echo: pushd %dirpath% for /f "usebackq tokens=1,*" %%x in ("%sha1file%") do ( set "sha1value=%%x" set "filename=%%y" ) if not exist "%filename%" GOTO NOTARGET echo ディレクトリ %cd% echo ファイル名 %filename% echo: for /f "usebackq tokens=2 delims==" %%x in (`openssl sha1 -hex "%filename%"`) do ( set "sha1check=%%x" ) set "sha1check=%sha1check:~1%" if "%sha1value%"=="%sha1check%" ( echo OK %filename% echo OK %sha1check% ) else ( echo ! ERROR ! %filename% echo 照合値 %sha1value% echo 計算値 %sha1check% ) GOTO END REM ##################################### REM ### NOTARGET REM ##################################### :NOTARGET echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo !!! !!! echo ! ! チェック指定ファイルがありませぬ....orz ! echo !!! !!! echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo. echo *** 何かキーを押すと戻ります *** echo. pause >nul GOTO ASK REM ##################################### REM ### NOFILE REM ##################################### :NOFILE echo: echo: echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo !!! !!! echo ! ! openssl.exe がありませぬ.... ! echo !!! !!! echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: GOTO END REM ##################################### REM ### DONE REM ##################################### :END echo. echo *** 何かキーを押すと閉じます *** echo. pause >nul