a6afd62o

Live5chのDAT落ちした過去ログファイルを一括削除する.ps1

Jan 30th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # 説明:Live5chのDAT落ちした過去ログファイルを一括削除します。
  2. # 使い方:本ファイルをダブルクリック実行。
  3. # [ダブルクリックで実行する方法]
  4. #  →ここ参照:http://devadjust.exblog.jp/22696383/
  5. #  →ここ参照:https://qiita.com/tomoko523/items/df8e384d32a377381ef9
  6. # [本ファイルの置き場所]
  7. # どこでも良い
  8. # [FAQ]
  9. # Q. なぜ過去ログを削除するのか?
  10. # A. 過去ログが多くなると Microsoft Windows Search Indexer (SearchIndexer.exe) が重くなるため。
  11. # Q. 大事なファイルが消えたりしないか?
  12. # A. 「subject.txtに存在しない.datと.idxファイル」のみ削除します。
  13. # Q. HDDがガリガリいう
  14. # A. ファイルを削除するとしばらくして、上記 SearchIndexer.exe が走り、しばらくHDDがガリガリいいます。削除したファイルが1万ファイルだとガリガリいう時間は10分ぐらいです。
  15.  
  16.  
  17.  
  18.  
  19. # ユーザーから入力を受け付けて入力内容を $a に格納
  20. $a =(Read-Host Live5chのDAT落ちしたログを全て削除します。よろしいですか?[y/N] )
  21. echo $a
  22. if ( ($a -eq "y") -Or ($a -eq "Y") ){
  23.     # Yes
  24.     echo Yes
  25. }else{
  26.     # No
  27.     echo No
  28.     pause
  29.     exit
  30. }
  31.  
  32.  
  33. $script:total = 0 # 合計消した数
  34.  
  35.  
  36.  
  37. function debug_show_path(  ) {
  38.     $curdir = Get-Location
  39.     #echo "curdir=[$curdir]"
  40.     $ichi = $curdir.path.IndexOf("Live2ch")
  41.     if ( $ichi -eq -1 ) {
  42.         $ichi = $curdir.path.IndexOf("Live5ch")
  43.     }
  44.     $tmppath = $curdir.path.Substring($ichi)
  45.     #echo "tmppath=[$tmppath]"
  46.     echo "debug_show_path:[...\$tmppath]"
  47. }
  48.  
  49. function funcboard ( $server, $board )
  50. {
  51.     echo $board
  52.     Push-Location $board
  53.    
  54.     debug_show_path
  55.    
  56.     #dir
  57.     $list = Get-ChildItem -Filter *.dat
  58.     #echo $list
  59.     if ( $list ) {
  60.         foreach($a in $list)
  61.         {
  62.             #echo "--debug--"
  63.             #echo $a
  64.             try {
  65.                 $datfile = $(Get-ItemProperty $a).Name
  66.                 #echo "datfile is"
  67.                 #echo $datfile
  68.                 $ret = Select-String -Quiet $datfile subject.txt
  69.                 if ( $ret ) {
  70.                     #echo found
  71.                 } else {
  72.                     #echo not exist
  73.                     # もうsubject.txtに無いということはDAT落ちしているので、
  74.                     # 過去ログを消す
  75.                     $idxfile = $datfile.Replace(".dat", ".idx");
  76.                     echo "deleted $server/$board/$idxfile"
  77.                     echo "deleted $server/$board/$datfile"
  78.                     #exit
  79.                     Remove-Item $idxfile
  80.                     Remove-Item $datfile
  81.                     $script:total = $script:total + 1
  82.                 }
  83.             } catch {
  84.                 # subject.txtが無いフォルダがある。その場合は例外が発生しここにくる。
  85.                 echo "Exception occured."
  86.             }
  87.         }
  88.     }
  89.     Pop-Location
  90. }
  91.  
  92. function funcserver ( $server )
  93. {
  94.     echo $server
  95.     Push-Location $server
  96.    
  97.     debug_show_path
  98.    
  99.     $list = Get-ChildItem -Directory
  100.     foreach($a in $list)
  101.     {
  102.         #echo "--debug--"
  103.         #echo $a
  104.         $board = $(Get-ItemProperty $a).Name
  105.         funcboard $server $board
  106.     }
  107.     Pop-Location
  108. }
  109.  
  110. function main() {
  111.  
  112.     # レジストリからLive5chのディレクトリを取得する
  113.     $item = (Get-Item -Path "Registry::HKCU\Software\VB and VBA Program Settings\Live2ch\Path").GetValue("Path")
  114.     $parentdir = Split-Path $item -Parent
  115.     $basedir = Join-Path $parentdir "\log"
  116.  
  117.     $ret = Test-Path $basedir
  118.     if ( -Not $ret ) {
  119.         echo "ERROR: Live5chのlogフォルダが存在しません。[$basedir]"
  120.         pause
  121.         exit
  122.     }
  123.  
  124.     #echo $basedir
  125.     Push-Location $basedir
  126.    
  127.     debug_show_path
  128.    
  129.     #Set-Location $basedir
  130.     $list = Get-ChildItem -Directory
  131.     foreach($a in $list)
  132.     {
  133.         #echo "--debug--"
  134.         #echo $a
  135.         $name = $(Get-ItemProperty $a).Name
  136.         #echo $name
  137.         funcserver $name
  138.     }
  139.  
  140.     Pop-Location
  141. }
  142.  
  143. main
  144.  
  145. echo "合計:[$script:total]ファイル消しました。"
  146.  
  147. pause
Add Comment
Please, Sign In to add comment