From e6de2995be052d109b6f649ceec7b139ed209f77 Mon Sep 17 00:00:00 2001 From: dreamforceinc Date: Sun, 23 Jun 2024 14:25:05 +0300 Subject: [PATCH] Update scripts. --- Test-Start.bat | 72 ++++++++++++++ wDayzLogRotation.ps1 | 232 ++++++++++++++++++++++++++----------------- 2 files changed, 211 insertions(+), 93 deletions(-) create mode 100644 Test-Start.bat diff --git a/Test-Start.bat b/Test-Start.bat new file mode 100644 index 0000000..e1b1e84 --- /dev/null +++ b/Test-Start.bat @@ -0,0 +1,72 @@ +@echo off +:: !!! Needs 'DAYZSERVERSLOCATION' envvar defined !!! +:: !!! setx DAYZSERVERSLOCATION Z:\Servers\DayZServer [/m] + +::Server name +set serverName=RU11 Test Server +::Server files location +set serverLocation=%DAYZSERVERSLOCATION% +::Server profile location +set serverProfile=Instance_4 +::Server Port +set serverPort=35400 +::Logical CPU cores to use (Equal or less than available) +set serverCPU=2 +::Server config +set serverConfig=serverDZ.cfg +::Server mods +set serverMods= +::Client mods +set clientMods=@CF;@VPPadminTools;@VanillaPlusPlusMap;@KAMAZ +::Startup parameters +set startupParams=-profiles=%serverProfile% -config=%serverProfile%\%serverConfig% -name=Server -port=%serverPort% +::Additional Startup parameters +set additionalParams=-cpuCount=%serverCPU% -adminLog +::Path to log rotation script +set scriptLocation=D:\Sync\SRC\PowerShell\wDayzLogRotation\wDayzLogRotation.ps1 +@REM set scriptLocation=%serverLocation%\wDayzLogRotation.ps1 +::BEC location +set becLocation=%serverLocation%\BEC +@REM set becLocation= +::AdminTool's logs location +set adminToolLogsLocation=%serverLocation%\%serverProfile%\VPPadminTools\Logging +@REM set adminToolLogsLocation= + + +:: !!! (DON'T EDIT BELOW) !!! +::Sets title for terminal +title %serverName% batch +set cwd=%CD% +cd /d "%serverLocation%" + +::Prepare commandline +if defined serverMods set tsm="-serverMod=%serverMods%" +if defined clientMods set tcm="-mod=%clientMods%" +set allMods=%tsm% %tcm% +set cmdLine="DayZServer_x64.exe" %startupParams% %additionalParams% %allMods% + +::BEC's logs location +if defined becLocation ( + set becLogsLocation=%becLocation%\Log\%serverProfile% +) else ( + set becLogsLocation= +) + +::Start log rotation +powershell.exe -File "%scriptLocation%" "%serverLocation%" "%serverLocation%\%serverProfile%" "%becLogsLocation%" "%adminToolLogsLocation%" + +goto _exit + +timeout 3 /nobreak >nul +echo. + +::Start DayZServer +start "DayZ %serverProfile%" /high %cmdLine% + +::Start BEC +cd /d "%becLocation%" +start "BEC %serverProfile%" "%becLocation%\Bec.exe" -f %serverProfile%.cfg --dsc + +:_exit +cd /d "%cwd%" +echo END diff --git a/wDayzLogRotation.ps1 b/wDayzLogRotation.ps1 index 0e29174..0019eb2 100644 --- a/wDayzLogRotation.ps1 +++ b/wDayzLogRotation.ps1 @@ -3,68 +3,64 @@ # https://github.com/dreamforceinc # # Input parameters: -# : Absolute, fully qualified path to server's root folder. -# : Usually name of folder inside the server's root folder. Can be absolute path. -# : In this case, the last part of path interpreted as the name of instance. -# [Path to BEC location] : Optional. By default, BEC location inside the server's root folder. +# : Absolute, fully qualified path to server's root folder. +# : Absolute, fully qualified path to server's instance folder. +# [Path to BEC's logs location] : Optional. By default, BEC location inside the server's root folder. +# [Path to Admin Tool's logs location]: Optional. By default, AT location inside the instance's folder. # # Example: -# powershell.exe -File "wDayzLogRotation.ps1" "Z:\Servers\DayZServer" "Instance_1" "D:\server tools\BEC" +# powershell.exe -File "wDayzLogRotation.ps1" "Z:\Servers\DayZServer" "Z:\Servers\DayZServer\profiles\Instance_1" "D:\server tools\BEC" "Z:\Servers\DayZServer\profiles\Instance_1\VPPadminTools" # ------------------------------[ Configuration ]------------------------------ -$daysAmount = 7 # Number of days to store logs -$serverLocation = "Z:\DayZServer" # Path to server's location -$instance = "Instance_1" # Instance's NAME. -$becLocation = "${serverLocation}\BEC" # Path to BEC -$noDelete = $false # For tests - don't delete logs +$daysAmount = 7 # Number of days to store logs +$noDelete = $true # For tests - don't delete logs # ----------------------------------------------------------------------------- -if ($args[0]) { $serverLocation = $args[0] } -if ($args[1]) { $instance = $args[1] } -if ($args[2]) { $becLocation = $args[2] } +# -------------------------[ !!! DON'T EDIT BELOW !!! ]------------------------ +$serverLocation = $args[0] +$instanceDir = $args[1] +$becLogDir = $null +$adminToolLogDir = $null +if ($args[2]) { $becLogDir = $args[2] } +if ($args[3]) { $adminToolLogDir = $args[3] } -if ([System.IO.Path]::IsPathRooted($instance)) { - $instanceDir = "${instance}" - $instance = Split-Path -Path "${instanceDir}" -Leaf -} else { - $instanceDir = "${serverLocation}\${instance}" -} - -if (![System.IO.Path]::IsPathRooted($becLocation)) { - $becLocation = "${serverLocation}\${becLocation}" -} - -$destDir = "${instanceDir}\RotatedLogs" $daysAmount = [Math]::Abs($daysAmount) -$becLogDir = "${becLocation}\Log\${instance}" -$becDestDir = "${destDir}\BEC" +$instance = Split-Path -Path "${instanceDir}" -Leaf +$destDir = "${instanceDir}\RotatedLogs" +$destDelDir = "${destDir}\DeletedLogs" +if ($becLogDir) { $becDestDir = "${destDir}\BEC" } +if ($adminToolLogDir) { $adminToolDestDir = "${destDir}\AdminTool" } + +### Debug output ### +# Write-Host " serverLocation: '${serverLocation}'" +# Write-Host " instanceDir: '${instanceDir}'" +# Write-Host " instance: '${instance}'" +# Write-Host " destDir: '${destDir}'" +# Write-Host " destDelDir: '${destDelDir}'" +# Write-Host " becLogDir: '${becLogDir}'" +# Write-Host " becDestDir: '${becDestDir}'" +# Write-Host " adminToolLogDir: '${adminToolLogDir}'" +# Write-Host " adminToolDestDir: '${adminToolDestDir}'" Write-Host "Start Log rotation powershell script" $date = Get-Date +$fileList = $null -# # Debug output -# Write-Host "serverLocation: '${serverLocation}'" -# Write-Host " instance: '${instance}'" -# Write-Host " instanceDir: '${instanceDir}'" -# Write-Host " destDir: '${destDir}'" -# Write-Host " destDelDir: '${destDelDir}'" -# Write-Host " becLocation: '${becLocation}'" -# Write-Host " becLogDir: '${becLogDir}'" -# Write-Host " becDestDir: '${becDestDir}'" +#region ### DayZ Game ### +Write-Host "Rotating DAYZ logs..." + +If (!(Test-Path -PathType Container $destDir)) { + New-Item -ItemType Directory -Path $destDir | Out-Null + Write-Host "Created new folder: ${destDir}" +} -Write-Host "Now DAYZ..." $fileList = Get-Item -Path $instanceDir\*.rpt, $instanceDir\*.log, $instanceDir\*.adm | Where-Object { $_.LastWriteTime.Date -lt $date.Date } # Write-Host $fileList -Separator "`r`n" -If (!(Test-Path -PathType Container $destDir)) { - New-Item -ItemType Directory -Path $destDir | Out-Null - Write-Host "Created new folder: ${destDir}" -} - -Write-Host "Moving RPTs and LOGs to ${destDir}:" +Write-Host "Moving RPTs, ADMs and LOGs to ${destDir}:" foreach ($file in $fileList) { - Move-Item -Path $file -Destination $destDir - Write-Host "Moved ${file} to ${destDir}" + Move-Item -Path $file -Destination $destDir -Force + Write-Host "Moved ${file} to ${destDir}" } Write-Host "Total: $($fileList.Length)" @@ -72,63 +68,113 @@ $fileList = Get-Item -Path $destDir\*.rpt, $destDir\*.log, $destDir\*.adm | Wher # Write-Host $fileList -Separator "`r`n" Write-Host "Removing RPTs, ADMs and LOGs:" -$destDelDir = $destDir if ($noDelete) { - $destDelDir = "${destDir}\DeletedLogs" - - If (!(Test-Path -PathType Container $destDelDir)) { - New-Item -ItemType Directory -Path $destDelDir | Out-Null - Write-Host "Created new folder: ${destDelDir}" - } - - foreach ($file in $fileList) { - Move-Item -Path $file -Destination $destDelDir - Write-Host "Moved ${file} to ${destDelDir}" - } -} -else { - foreach ($file in $fileList) { - Remove-Item -Path $file - Write-Host "Removed ${file}!" - } + If (!(Test-Path -PathType Container $destDelDir)) { + New-Item -ItemType Directory -Path $destDelDir | Out-Null + Write-Host "Created new folder: ${destDelDir}" + } + + foreach ($file in $fileList) { + Move-Item -Path $file -Destination $destDelDir -Force + Write-Host "Moved ${file} to ${destDelDir}" + } +} else { + foreach ($file in $fileList) { + Remove-Item -Path $file + Write-Host "Removed ${file}!" + } } Write-Host "Total: $($fileList.Length)" Write-Host "" +#endregion -### BEC ### -Write-Host "Now BEC..." +#region ### BEC ### +if ($becDestDir) { + Write-Host "Rotating BEC logs..." + # $fileList = $null -If (!(Test-Path -PathType Container $becDestDir)) { - New-Item -ItemType Directory -Path $becDestDir | Out-Null - Write-Host "Created new folder: ${becDestDir}" + If (!(Test-Path -PathType Container $becDestDir)) { + New-Item -ItemType Directory -Path $becDestDir | Out-Null + Write-Host "Created new folder: ${becDestDir}" + } + + $fileList = Get-ChildItem -Path $becLogDir\*.log -Recurse | Where-Object { $_.LastWriteTime.Date -lt $date.Date } + # Write-Host $fileList -Separator "`r`n" + + Write-Host "Moving BEC's LOGs to ${becDestDir}:" + foreach ($file in $fileList) { + Move-Item -Path $file -Destination $becDestDir -Force + Write-Host "Moved ${file} to ${becDestDir}" + } + Write-Host "Total: $($fileList.Length)" + + $fileList = Get-Item -Path $becDestDir\*.log | Where-Object { $_.LastWriteTime -lt $date.AddDays(-($daysAmount)) } + # Write-Host $fileList -Separator "`r`n" + + Write-Host "Removing BEC's LOGs:" + if ($noDelete) { + If (!(Test-Path -PathType Container $destDelDir)) { + New-Item -ItemType Directory -Path $destDelDir | Out-Null + Write-Host "Created new folder: ${destDelDir}" + } + + foreach ($file in $fileList) { + Move-Item -Path $file -Destination $destDelDir + Write-Host "Moved ${file} to ${destDelDir}" + } + } else { + foreach ($file in $fileList) { + Remove-Item -Path $file + Write-Host "Removed ${file}!" + } + } + Write-Host "Total: $($fileList.Length)" + Write-Host "" } +#endregion -$fileList = Get-ChildItem -Path $becLogDir\*.log -Recurse | Where-Object { $_.LastWriteTime.Date -lt $date.Date } -# Write-Host $fileList -Separator "`r`n" +#region ### Admin Tool ### +if ($adminToolDestDir) { + Write-Host "Rotating AdminTool logs..." + + If (!(Test-Path -PathType Container $adminToolDestDir)) { + New-Item -ItemType Directory -Path $adminToolDestDir | Out-Null + Write-Host "Created new folder: ${adminToolDestDir}" + } + + $fileList = Get-ChildItem -Path $adminToolLogDir\*.txt, $adminToolLogDir\*.log -Recurse | Where-Object { $_.LastWriteTime.Date -lt $date.Date } + # Write-Host $fileList -Separator "`r`n" -Write-Host "Moving BEC's LOGs to ${becDestDir}:" -foreach ($file in $fileList) { - Move-Item -Path $file -Destination $becDestDir - Write-Host "Moved ${file} to ${becDestDir}" + Write-Host "Moving admintool's LOGs to ${adminToolDestDir}:" + foreach ($file in $fileList) { + Move-Item -Path $file -Destination $adminToolDestDir -Force + Write-Host "Moved ${file} to ${adminToolDestDir}" + } + Write-Host "Total: $($fileList.Length)" + + $fileList = Get-Item -Path $adminToolDestDir\*.txt, $adminToolDestDir\*.log | Where-Object { $_.LastWriteTime -lt $date.AddDays(-($daysAmount)) } + # Write-Host $fileList -Separator "`r`n" + + Write-Host "Removing admintool's LOGs:" + if ($noDelete) { + If (!(Test-Path -PathType Container $destDelDir)) { + New-Item -ItemType Directory -Path $destDelDir | Out-Null + Write-Host "Created new folder: ${destDelDir}" + } + + foreach ($file in $fileList) { + Move-Item -Path $file -Destination $destDelDir -Force + Write-Host "Moved ${file} to ${destDelDir}" + } + } else { + foreach ($file in $fileList) { + Remove-Item -Path $file + Write-Host "Removed ${file}!" + } + } + Write-Host "Total: $($fileList.Length)" + Write-Host "" } -Write-Host "Total: $($fileList.Length)" - -$fileList = Get-Item -Path $becDestDir\*.log | Where-Object { $_.LastWriteTime -lt $date.AddDays(-($daysAmount)) } -# Write-Host $fileList -Separator "`r`n" - -Write-Host "Removing BEC's LOGs:" -if ($noDelete) { - foreach ($file in $fileList) { - Move-Item -Path $file -Destination $destDelDir - Write-Host "Moved ${file} to ${destDelDir}" - } -} -else { - foreach ($file in $fileList) { - Remove-Item -Path $file - Write-Host "Removed ${file}!" - } -} -Write-Host "Total: $($fileList.Length)" +#endregion Write-Host "End Log rotation powershell script"