@echo off title %~nx0 REM ## check md5sum.exe if exist md5sum.exe set md5exe=ok if exist md5sum.exe set path=%cd%;%path% if exist .\UnxUtils\usr\local\wbin\md5sum.exe set md5exe=ok if "%md5exe%"=="" GOTO NOFILE REM ##################################### REM ### START REM ##################################### echo: echo ************************************************************** echo * * echo * === MD5値を算出します === * echo * * echo * **** md5sum.exe が必要です **** * echo * * echo * === サブディレクトリはチェックしません... === * echo * * echo * === 指定ディレクトリのmd5sumディレクトリ内にmd5.txt作成=== * echo * * echo ************************************************************** echo: echo 続行しますか? 中断は xボタン or Ctrl-C echo: echo *** 何かキーを押すと続行します *** pause >nul set path=%cd%\UnxUtils\usr\local\wbin;%path% GOTO ASK REM ##################################### REM ### ASK REM ##################################### :ASK set dirpath= cls echo: echo ============================================================== echo *** 対象ディレクトリは? *** echo ============================================================== echo: echo *** 無指定だとここの ディレクトリが対象です *** echo *** フルパスで指定 : C:\test *** echo *** 相対パスで指定 (ここの test なら) : test *** echo *** 相対パスで指定 (一つ上の test なら) : ..\test *** echo: echo * 中断するには 99 を入れてEnter * echo: echo ============================================================== echo: set /p dirpath= ディレクトリ名: echo: for /f "usebackq delims=" %%I in ('%dirpath%') do set dirpath=%%~I if "%dirpath%"=="99" GOTO CANCEL if "%dirpath%"=="" set dirpath=%cd% echo %dirpath% | findstr : | findstr /v \\ >nul && set "dirpath=%dirpath%\" for /f "delims=" %%I in ("%dirpath%") do set dirpath=%%~fI if not exist "%dirpath%" GOTO WAIT for /f "delims=" %%I in ("%dirpath%") do set dir_test=%%~aI if not "%dir_test:~0,1%"=="d" ( echo * %dirpath% はディレクトリじゃないです! && GOTO WAIT ) set "dirpath=%dirpath:\\=\%" GOTO NAME :WAIT echo: echo ! ディレクトリがありません echo: echo *** 何かキーを押すと続行します *** pause >nul GOTO ASK REM ##################################### REM ### kakuninnnin REM ##################################### :NAME set choice= cls echo: echo ============================================================== echo ====== 計算をはじめまする ===== echo ============================================================== echo * 対象ディレクトリは echo * %dirpath% echo ============================================================== echo === * よろしいですか? * === echo === === echo === * 戻るには n を入れてEnter * === echo === * 中断するには 99 を入れてEnter * === echo ============================================================== echo: set /p choice= [Y,n,99 ]: echo: if /i "%choice%"=="99" GOTO CANCEL if /i "%choice%"=="n" GOTO ASK REM ##################################### REM ### Check Directory REM ##################################### :CHK_DIR set nakami=nasi dir /a-d /b "%dirpath%" >nul 2>nul && set nakami=ari if "%nakami%"=="ari" GOTO MD5BACK cls echo: echo ============================================================== echo: echo ! * %dirpath% には echo ! * ファイルが無いようです.... echo: echo * === サブディレクトリはチェックしません... === * echo: echo ============================================================== echo: echo *** 何かキーを押すと戻ります *** pause >nul GOTO ASK REM ##################################### REM ### old file rename REM ##################################### :MD5BACK set "md5dir=%dirpath%\md5sum" set "md5dir=%md5dir:\\=\%" if not exist "%md5dir%\" ( mkdir "%md5dir%" ) set md5file=%md5dir%\md5.txt if not exist "%md5file%" GOTO MAKE for /f "delims=" %%I in ("%md5file%") do set bt=%%~tI set bt=%bt: =% set bt=%bt:~-13,2%%bt:~-10,2%%bt:~-7,2%_%bt:~-5,2%%bt:~-2,2%_%RANDOM% for /f "delims=" %%I in ("%md5file%") do set backname=%%~nI_%bt%%%~xI ren "%md5file%" %backname% REM ##################################### REM ### MAKE REM ##################################### :MAKE pushd %dirpath% cls echo: echo: echo: echo ... MD5チェックサムを算出しています ... echo: REM for %%x in (*) do md5sum.exe -b "%%x" >> "%md5file%" 2>&1 for /f "usebackq delims=" %%x in (`dir /a-d /b`) do md5sum.exe -b "%%x" >> "%md5file%" 2>&1 if ERRORLEVEL 1 GOTO ERROR1 GOTO DONE REM ##################################### REM ### ERROR REM ##################################### :NOFILE echo: echo !md5sum.exe がありません ! GOTO NOFILES :NOFILES echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo !!! !!! echo !!! ! ファイルが足りないのて中断しますです... !!! echo !!! !!! echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: GOTO END :ERROR1 echo: echo ============================================================== echo ! md5sum.exe の実行でエラーが出たようです... ! echo ============================================================== GOTO END REM ##################################### REM ### DONE REM ##################################### :DONE cls echo: echo: echo: echo ============================================================== echo: echo %md5dir% ディレクトリに echo md5.txt を保存しました。 echo: echo ============================================================== GOTO END :CANCEL echo: echo キャンセルしますた... GOTO END :END echo: echo *** 何かキーを押すと閉じます *** pause >nul