• ベストアンサー

【BAT(バッチ)ファイル】Webページが存在して

【BAT(バッチ)ファイル】Webページが存在しているか404 not foundかを成否で識別出来るBAT(バッチ)ファイルの書き方を教えてください。 http://example.com/0000/1-1.html http://example.com/0001/1-1.htmlhttp://example.com/9999/1-1.html 0000ディレクトリから9999ディレクトリまでアクセスして1-1.htmlが存在しているか一括で自動化して調べて出力する方法を教えてください。 OSはAndroidまたはWindows10です。

質問者が選んだベストアンサー

  • ベストアンサー
  • i4004i
  • ベストアンサー率39% (61/154)
回答No.1

以下に、ご要望のバッチファイルのサンプルコードと解説を示します。以下はDOSプロンプトの場合です。 @echo off setlocal enabledelayedexpansion set "baseURL=http://example.com/" set "pageName=1-1.html" for /l %%i in (0000, 1, 9999) do ( set "url=!baseURL!%%i/!pageName!" curl -s -o /dev/null -w "%%{http_code}" "!url!" > temp.txt set /p httpCode=<temp.txt del temp.txt if !httpCode! equ 200 ( echo !url! - 存在する ) else if !httpCode! equ 404 ( echo !url! - 存在しない ) else ( echo !url! - その他 (!httpCode!) ) ) 解説 初期設定: echo off: コマンドプロンプトへのコマンド表示をオフにします。 setlocal enabledelayedexpansion: 変数の遅延展開を有効にします。 baseURL, pageName: ベースURLとページ名を定義します。 ループ処理: for /l %%i in (0000, 1, 9999) do: 0000から9999までのディレクトリ番号でループします。 set "url=!baseURL!%%i/!pageName!": 現在のディレクトリ番号を使ったURLを生成します。 curl -s -o /dev/null -w "%%{http_code}" "!url!" > temp.txt: curlコマンドでWebページにアクセスし、HTTPステータスコードのみをtemp.txtに保存します。 (-s: サイレントモード, -o /dev/null: 出力を破棄, -w "%%{http_code}": ステータスコードのみを出力) set /p httpCode=<temp.txt: temp.txtからHTTPステータスコードを読み込みます。 del temp.txt: temp.txtを削除します。 結果判定と出力: if !httpCode! equ 200: HTTPステータスコードが200(成功)の場合、「存在する」と出力します。 else if !httpCode! equ 404: HTTPステータスコードが404(Not Found)の場合、「存在しない」と出力します。 else: その他のステータスコードの場合、「その他」と出力し、ステータスコードも表示します。 実行方法 上記コードをテキストエディタにコピーし、拡張子を.batとして保存します(例:check_pages.bat)。 コマンドプロンプトを開き、保存したバッチファイルを実行します。 注意点 このスクリプトは、curlコマンドが利用可能な環境で動作します。Windowsの場合は、事前にcurlをインストールする必要があります。 大量のページにアクセスする場合、サーバーに負荷をかける可能性があるため、アクセス間隔を調整するなどの配慮が必要です。 免責事項: このスクリプトの動作は保証しません。参考に留めてください。 また、Webページの存在チェックを自動化する一般的な方法を提供するものであり、特定のWebサイトの利用規約に違反しないよう、ご自身の責任においてご利用ください。

note11pro5G5
質問者

お礼

みんなありがとうございます

Powered by GRATICA

その他の回答 (1)

  • agehage
  • ベストアンサー率22% (2752/12072)
回答No.2

Invoke-WebRequestして、エラーコードを見ればよいかと https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7.4 コードを短くしたいならforで回す、わからなきゃ9999行書けばいいかと エクセルとか使えば簡単に9999までの連番書けると思います それを秀丸辺りで矩形コピーしてうまいことバッチを作るのが一番簡単

関連するQ&A