Windowsログファイルを収集するバッチファイル

Windows標準のログファイルを収集して圧縮するバッチファイルです。

@echo off

cls
color 0F
REM 管理者として実行されているか確認 START
for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do (
    if "%%~i"=="BUILTIN\Administrators" set ADMIN=yes
    if "%%~i"=="Mandatory Label\High Mandatory Level" set ELEVATED=yes
    )
if "%ADMIN%" neq "yes" (
    echo _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    echo.
    echo.
    echo.
    echo 管理者権限でないため終了します。
    echo.
    echo.

    pause
    exit
    )

if "%ELEVATED%" neq "yes" (
    rem Admin権限あリユーザが通常実行した場合(昇格しない)
    echo _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    echo.
    echo.
    echo このファイルは管理者権限での実行が必要なため
    echo.
    echo 管理者へ権限を昇格します。
    echo.
    echo しばらくお待ちください
    echo.
    echo.
  timeout /t 3 > nul
    goto runas
    )

for /F "tokens=1-3 delims=/ " %%a in ('date /t') do set fir=%%a%%b%%c

cls
echo ■■■■■■■■■ ログファイル収集くん Ver5.0 ■■■■■■■■■
echo.
echo.
echo.
echo このパッチは、パソコン内のOSログファイルをコピーして
echo.
echo 「%fir%_%COMPUTERNAME%_LOG_Part*.cab」として圧縮保存します。
echo.
echo 「Security.evtx」は更に「Security_Part*.cab」として20M単位
echo.
echo で分割して圧縮保存します。
echo.
echo.
echo.
echo.

pause

cls
echo ■■■■■■■■■ ログファイル収集くん Ver5.0 ■■■■■■■■■
echo.
echo.
echo.
echo.
echo 作成するログのフォルダ名とするために以下を入力してください。
echo.
echo.
echo.

set/p kanri="作成するログのフォルダ名 (例 :リビングOSログ): "

echo.
echo.
echo.
echo.
echo _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
echo.
echo フォルダ名は %kanri% ですね。
echo.
echo 保存・圧縮作業を実施します。
echo.
echo _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
echo.
echo.
echo.

pause

cls
echo ■■■■■■■■■ ログファイル収集くん Ver5.0 ■■■■■■■■■
echo.
echo.
echo.
echo ログをデスクトップに保存中!!
echo.
echo.

if not exist C:\Windows\System32\winevt\Logs goto :ER1

mkdir C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG
copy C:\Windows\System32\winevt\Logs\* C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\

cls
echo ■■■■■■■■■ ログファイル収集くん Ver5.0 ■■■■■■■■■
echo.
echo.
echo.
echo.
echo Secutiryログを20M単位で分割・圧縮中 !!
echo.
echo.

echo .Set CabinetNameTemplate=Security_Part*.cab > C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
echo .Set DiskDirectoryTemplate=C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG >> C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
echo .Set MaxDiskSize=20480000 >> C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
echo .Set Cabinet=on >> C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
echo .Set Compress=on >> C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
echo .Set InfFileName=NUL >> C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
echo .Set RptFileName=NUL >> C:\USERS\%usERNAME%\Desktop\Secucomp.ddf
echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\Security.evtx" >> C:\USERS\%USERNAME%\Desktop\Secucomp.ddf

for /f "tokens=1-3 delims= " %%1 in ('dir /s /a-d C:\Windows\System32\winevt\Logs\Security.evtx') do if %%2==個のファイル set size=%%3
if "%size%" geq "20,480,000" call :seclog

cls
echo ■■■■■■■■■ ログファイル収集くん Ver5.0 ■■■■■■■■■
echo.
echo.
echo.
echo.
echo 全ログフォルダを分割・圧縮中 !!
echo.
echo.

echo .Set CabinetNameTemplate=%fir%_%COMPUTERNAME%_LOG_Part*.cab > C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
echo .Set DiskDirectoryTemplate=C:\USERS\%USERNAME%\Desktop >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
echo .Set MaxDiskSize=2048000000 >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
echo .Set Cabinet=on >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
echo .Set Compress=on >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
echo .Set InfFileName=NUL >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
echo .Set RptFileName=NUL >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf

REM System
echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\System.evtx" >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
for /f %%a in ('dir /b C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\Microsoft-Windows-System-*.*') do echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\%%a" >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf

REM Application
echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\Application.evtx" >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
for /f %%a in ('dir /b C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\Microsoft-Windows-Application-*.*') do echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\%%a" >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf

REM Setup
echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\Setup.evtx" >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
for /f %%a in ('dir /b C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\Microsoft-Windows-Setup-*.*') do echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\%%a" >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf

REM Security
for /f %%a in ('dir /b C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\Security_Part*.cab') do echo "C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG\%%a" >> C:\USERS\%USERNAME%\Desktop\Logcomp.ddf

Makecab /f C:\USERS\%USERNAME%\Desktop\Logcomp.ddf

del C:\USERS\%USERNAME%\Desktop\Logcomp.ddf
del C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
del /Q /F C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG

mkdir C:\USERS\%USERNAME%\Desktop\%fir%_%kanri%

echo このログはWindows純正のCAB圧縮をしてあります。 >> C:\USERS\%USERNAME%\Desktop\%fir%_%kanri%\解凍について.txt
echo. >> C:\USERS\%USERNAME%\Desktop\%fir%_%kanrl%\解凍について.txt
echo 解凍は「%fir%_%COMPUTERNAME%_LOG_Partl.cab」 上で右クリックし >> C:\USERS\%USERNAME%\Desktop\%fir%_%kanri%\解凍について.txt
echo 表示されたらメニューから「プログラムから開く」→「エクスプローラ」 >> C:\USERS\%USERNAME%\Desktop\%fir%_%kanri%\解凍について.txt
echo でファイルを取り出すことができます。 >> C:\USERS\%USERNAME%\Desktop\%fir%_%kanri%\解凍について.txt

move C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG_Part*.cab C:\USERS\%USERNAME%\Desktop\%fir%_%kanri%
rmdir /s /q C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG

cls
echo ■■■■■■■■■ ログファイル収集くん Ver5.0 ■■■■■■■■■
echo.
echo.
echo.
echo.
echo 「%fir%_%kanri%」フォルダにログを保存しました。
echo.
echo.
echo 圧縮されたファイルの解凍方法は「解凍について.txt」
echo.
echo に記載してあります。
echo.
echo.
echo.
echo.
echo.
echo.
echo 以上でログの収集は終了します。
echo.
echo.
echo.

pause
exit

REM エラー処理
:ER1
color CF
echo _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
echo.
echo.
echo ■ エラー :!!
echo.
echo C:\Windows\System32\winevt\Logsにアクセスできません。
echo.
echo アクセス権がないか ?何か不具合があるため終了します。
echo.
echo.

timeout /t 10
exit

:seclog

Makecab /f C:\USERS\%USERNAME%\Desktop\Secucomp.ddf
move C:\USERS\%USERNAME%\Desktop\Security_Part*.cab C:\USERS\%USERNAME%\Desktop\%fir%_%COMPUTERNAME%_LOG

exit /b

:runas

if "%1" == "" (
   rem 引数なしのため、管理者として再実行
   @powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process %~f0 REPEATED -Verb runas"
   ) else (
   echo _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
   echo.
   echo.
   echo.
   echo 管理者への昇格に失敗したため終了します。
   echo.
   echo.

   pause
   exit
   )
exit

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です