Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @ECHO OFF
- SET CURL_EXE=C:\bin\curl\bin\curl.exe
- SET NKF_EXE=C:\bin\nkf\nkf.exe
- SET MY_TEMP=%TEMP%
- IF "%3" equ "" (
- ECHO したらば掲示板のスレッドにキーワードと一致するレスが書き込まれたら表示する
- ECHO chk_shitaraba {カテゴリー/板/スレッド} {初回取得範囲} {キーワード}
- ECHO カテゴリー/板/スレッド:https://jbbs.shitaraba.net/bbs/read.cgi/computer/10298/1571996375/
- ECHO 対象スレッドとする場合 computer/10298/1571996375 の部分
- ECHO 初回取得範囲:1-^1から), 500-(500レス以降), l100(最新100レス), l5(最新l5レス) など
- ECHO キーワード:任意の文字列(findstr用正規表現) 「.」を指定すると全レス表示
- ECHO CTRL+C で終了
- GOTO end
- )
- IF NOT EXIST %CURL_EXE% (
- ECHO %CURL_EXE% がみつかりません
- GOTO end
- )
- IF NOT EXIST %NKF_EXE% (
- ECHO %NKF_EXE% がみつかりません
- GOTO end
- )
- IF NOT EXIST %MY_TEMP% (
- ECHO 作業用ディレクトリ %MY_TEMP% がみつかりません
- GOTO end
- )
- SET MY_WORK=%MY_TEMP%\chk_shitaraba
- IF NOT EXIST %MY_WORK% (
- MD %MY_WORK%
- )
- ECHO 作業用ファイルが
- ECHO %MY_WORK%
- ECHO の中につくられ終了後も残ります
- ECHO 終了後には削除してかまいません
- ECHO.
- PAUSE
- SET THREAD=%1
- SET GETRANGE=%2
- SET KEYWORD=%3
- SET BASE_FILENAME=%THREAD:/=_%
- ECHO. >"%MY_WORK%\%BASE_FILENAME%_last.txt"
- SET LAST_DATSIZE=-1
- :loop_top
- %CURL_EXE% -s http://jbbs.shitaraba.net/bbs/rawmode.cgi/%THREAD%/%GETRANGE% | %NKF_EXE% -s >"%MY_WORK%\%BASE_FILENAME%_res.txt"
- CALL :FILESIZE "%MY_WORK%\%BASE_FILENAME%_res.txt"
- SET NEW_DATSIZE=%ERRORLEVEL%
- IF %NEW_DATSIZE%==0 GOTO loop_wait
- findstr ^<title^>指定されたページまたはファイルは存在しません^<^/title^> "%MY_WORK%\%BASE_FILENAME%_res.txt" >"%MY_WORK%\%BASE_FILENAME%_404check.txt"
- CALL :FILESIZE "%MY_WORK%\%BASE_FILENAME%_404check.txt"
- IF NOT 0==%ERRORLEVEL% (
- ECHO %DATE% %TIME% ------------------------------
- ECHO 指定のスレッドは終了しているか存在していません
- DEL "%MY_WORK%\%BASE_FILENAME%_404check.txt"
- GOTO END
- )
- DEL "%MY_WORK%\%BASE_FILENAME%_404check.txt"
- findstr /R %KEYWORD% "%MY_WORK%\%BASE_FILENAME%_res.txt" >"%MY_WORK%\%BASE_FILENAME%_new.txt"
- fc "%MY_WORK%\%BASE_FILENAME%_last.txt" "%MY_WORK%\%BASE_FILENAME%_new.txt" >NUL 2>&1
- IF %errorlevel%==1 (
- ECHO %DATE% %TIME% ------------------------------
- TYPE "%MY_WORK%\%BASE_FILENAME%_new.txt"
- ECHO %DATE% %TIME% ------------------------------
- )
- DEL "%MY_WORK%\%BASE_FILENAME%_last.txt" >NUL 2>&1
- REN "%MY_WORK%\%BASE_FILENAME%_new.txt" %BASE_FILENAME%_last.txt
- REM %NEW_DATSIZE%は0の場合ここには来ない
- IF not %NEW_DATSIZE%==%LAST_DATSIZE% (
- CALL :UPDATE_GETRAGE
- SET LAST_DATSIZE=%NEW_DATSIZE%
- )
- :loop_wait
- REM 30秒待機
- timeout 30 >NUL
- GOTO loop_top
- REM == サブルーチン ==
- REM スレッド取得範囲の更新
- :UPDATE_GETRAGE
- ECHO.|SET /p =SET LASTNUM=>"%MY_WORK%\%BASE_FILENAME%_sub.bat"
- REM 全行取得し行数(最新レス番号)を得る
- %CURL_EXE% -s http://jbbs.shitaraba.net/bbs/rawmode.cgi/%THREAD%/1- | find /V /C "">>"%MY_WORK%\%BASE_FILENAME%_sub.bat"
- CALL "%MY_WORK%\%BASE_FILENAME%_sub.bat"
- DEL "%MY_WORK%\%BASE_FILENAME%_sub.bat"
- REM 数字の前の空白を削除
- SET LASTNUM=%LASTNUM: =%
- REM 現在の最終レス番号をもとに次の取得開始レス番号を得る
- SET /a GETFROM=%LASTNUM%+1
- SET GETRANGE=%GETFROM%-
- REM ECHO LASTNUM=%LASTNUM%
- REM ECHO GETFROM=%GETFROM%
- REM ECHO GETRANGE=%GETRANGE%
- EXIT /b 0
- REM ファイルサイズの取得
- :FILESIZE
- IF NOT EXIST %1 EXIT /b -1
- EXIT /b %~z1
- REM 終了
- :end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement