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