e日記風 独り言

#気まぐれ & 気まま & 天邪鬼な老いぼれ技術屋の日々の記録のうち、主に Perl・CGI・HTMLなど Web技術に関連した記事です。
右端上端の同一カテゴリージャンプボタンで同じカテゴリーの他の記事を順番にご覧いただけます。
Access Counter:  総アクセス数
-2297- Windows PowerShell の続き
= 今日は画像なし m(_ _)m =
ここでPowerShellスクリプトでxamppのエラーログファイルの削減について触れた。
ただ上記のリンク先の方法だと、PowerShellのマドが開いたままになってあまり格好良くない。PowerShellのマドを非表示のままで実行する方法を Web検索すると、Javaや VBスクリプト(vbs)などの別のスクリプトからなら アプリのマドを開かないで起動するような方法があると知った。
そこでそれらの情報を参考に、独自に vbs経由で ps起動するような vbs/ps 両スクリプトを考えてみた。1週間ほどかかって結構難儀したが何とか動くようになった。概ねは以下の通り
log_del.vbs

Option Explicit
Dim objFSO, objWshShell
' VBSパス、VBS格納フォルダ、PS1パス
Dim strVBSPath
Dim strVBSFolder
Dim strPS1Path
' オブジェクト参照
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
' VBSパス、VBS格納フォルダ、PS1パス
strVBSPath = Wscript.ScriptFullName
strVBSFolder = objFSO.GetFile(StrVBSPath).ParentFolder
strPS1Path = strVBSFolder & "\log_del.ps1"
' PS1起動オプション
Const OPT = "Powershell -ExecutionPolicy RemoteSigned -NoExit "
' PowerShellを Windowを表示せず非同期起動する
objWshShell.Run OPT & strPS1Path,0,false
' オブジェクト解放
Set objFSO = Nothing
Set objWshShell = Nothing

log_del.ps1

$dtime = (Get-Date -Format "MM/dd/HH:mm:ss")
$process = Get-Process -Name httpd -ErrorAction SilentlyContinue  # Apache 起動中チェック
Add-Content C:\xampp\Apache\logs\ps_result.txt $cmt
if ($process) {      # ログオン時だけ(Apache非実行)なら必要ない
  $cmt = $dtime + " / Apache(httpd) が起動中のためログを削除できません。"
  Add-Content C:\xampp\Apache\logs\result.txt $cmt
  exit
} else {
  $efilePath = "C:\xampp\Apache\logs\error.log"
  $afilePath = "C:\xampp\Apache\logs\access.log"
  $fsyze = (Get-Content C:\xampp\Apache\logs\error.log).Length  # ログ行数
  $readstr = Get-Content $efilePath -Tail 100           # 最後の100行だけ読む
  $readstr | Out-File $efilePath
  $result1 = echo $?                       # ファイル出力結果
  $readstr = Get-Content $afilePath -Tail 100
  $readstr | Out-File $afilePath
  $result2 = echo $?
  $dtime += " / " + $fsyze
  if(($result1 -eq "True") -or ($result2 -eq "True")){
   $dtime += "/ログ削除OK "
  }else{
   $dtime += "/ログ削除NG "
  }
  Add-Content C:\xampp\Apache\logs\ps_result.txt $dtime
}


上記 vbsと ps1ファイルを適当な同一フォルダに保存し、タスクスケジューラで ログオン時に log_del.vbsスクリプトを実行するように指定する。以下は出力される ps_result.txtの例

07/02/23:35:40 / Apache(httpd) が起動中のためログを削除できません。
07/03/18:56:23 / 107/ログ削除OK
07/04/11:03:31 / 123/ログ削除OK


2023/07/04
このページ(pdiary_2297.html)にコメント/質問をどうぞ
タイトル(30文字以内)
コメント
お名前(ID:10文字以内)
URL(HP or ブログをお持ちの方)
パスワード*
タイトル・コメント・ID は必須です
このページ(pdiary_2297.html)への今までのコメント/質問
このページにはまだ表示できる投稿がありません。

Back to Page top