:: Script created by Paul Kilian
:: Any queries regarding this script should be sent to
paul@paulslore.com
@echo off
setlocal ENABLEDELAYEDEXPANSION
set curdir=%cd%
:: Get date
set today=%date:~4%
:: Get parameters from INI file
echo Reading configuration
for /f "eol=; tokens=1,2 delims==" %%a in (disktrend.ini) do set %%a=%%b
if "!DataDir!" == "" set DataDir=Data
if "!DataDir:~-1!" == "\" set DataDir=!DataDir:~0,-1!
if "!ReportFile!" == "" set ReportFile=disktrend.html
if "!ReportPath!" == "" set ReportPath=Disk Trend Report
if "!ReportPath:~-1!" == "\" set ReportPath=!ReportPath:~0,-1!
if not exist "!DataDir!" md "!DataDir!"||(echo Error creating data directory&goto end)
if not exist "!ReportPath!" md "!ReportPath!"||(echo Error creating report directory&goto end)
if not exist "!ReportPath!\images" md "!ReportPath!\images"||(echo Error creating images directory&goto end)
if "!CustomTitle!" == "" (
if "!AlternateDomain!" == "" (
set CustomTitle=Analysis Report for %USERDOMAIN%
) else set CustomTitle=Analysis Report for !AlternateDomain!
) else (
for %%m in (!CustomTitle!) do (
set tmpvar=%%m
if "!tmpvar!" == "%%USERDOMAIN%%" (
set Title=!Title! %USERDOMAIN%
) else if "!tmpvar!" == "%%USERDNSDOMAIN%%" (
set Title=!Title! %USERDNSDOMAIN%
) else set Title=!Title! %%m
)
set CustomTitle=!Title!
)
if not exist "!CSSFile!" echo WARNING^^! - the CSS file does not exist
for %%a in (*.gif) do if not exist "!ReportPath!\images\%%a" copy /y %%a "!ReportPath!\images\">nul
for %%a in (*.css) do if not exist "!ReportPath!\%%a" copy /y %%a "!ReportPath!">nul
if not exist "!plpath!pl.exe" echo ERROR^^! - Ploticus executable not found&goto end
for /f "tokens=3,4 delims=/ " %%a in ("%date%") do (
if %%a == 01 (
set month=12
set /a year=%%b-1
) else (
set /a month=1%%a-101
set year=%%b
)
)
if !month! LSS 10 set month=0!month!
set repmnth=!year!-!month!
if not "%1" == "" (
if /i "%1" == "-graphonly" (
set growthswitch=nogrowth
goto graph
) else if /i "%1" == "-graphonly" (
goto graph
) else if /i "%1" == "-growthonly" (
goto growth
) else if /i "%1" == "-nogrowth" (
set growthswitch=nogrowth
) else goto starterror
)
echo Reading data
if "!UseLocal!" == "YES" (
echo Building server list
if exist servers.tmp del servers.tmp
if "!AlternateDomain!" == "" (
for /f "tokens=1 delims=\ " %%a in ('net view ^|find "\\"') do >>servers.tmp echo %%a
) else (
for /f "tokens=1 delims=\ " %%a in ('net view /domain:!AlternateDomain!^|find "\\"') do >>servers.tmp echo %%a
)
if not exist servers.tmp (
echo There was an error enumerating the server names. No servers were found.>"!ReportPath!!ReportFile!"
goto end
) else (
if not "!UseFilter!" == "" (
if "!UseFilter:~0,1!" == "-" (
>servers.txt type servers.tmp|find /i /v "!UseFilter:~1!"
) else >servers.txt type servers.tmp|find /i "!UseFilter!"
) else copy /y servers.tmp servers.txt>nul
del servers.tmp
)
)
echo Gathering data from hosts
for /f %%a in (servers.txt) do srvinfo -ns \\%%a|findstr "Drive: $">"!DataDir!\%%a.srv"
for %%a in ("!DataDir!\*.srv") do (
for /f %%b in ('type "%%a"^|find /c "$"') do if %%b GTR 0 (
set host=%%a
set host=!host:~0,-4!
set tempvar=!today!
set cols=Date
for /f "usebackq skip=1 tokens=1-5 delims= " %%m in ("%%a") do (
set drv=%%m&set drv=!drv:~0,1!
set cols=!cols! !drv!-Total !drv!-Free !drv!-Used !drv!-%%%%Free
for /f "tokens=1,2 delims=." %%t in ('clc %%p/%%o*100') do set percent=%%u&set percent=%%t.!percent:~1,2!
set tempvar=!tempvar! %%o %%p %%q !percent!
)
if not exist "!host!.tsv" echo !cols!>"!host!.tsv"
find "!today!" "!host!.tsv">nul||echo !tempvar!>>"!host!.tsv"
)
)
:graph
echo Generating daily graphs
echo Reading data
for /f %%a in ('dir /b "!DataDir!\*.tsv"^|find /v "~"^|find /v "Growth-"') do (
set host=%%a
set host=!host:~0,-4!
set daycount=0
set linedate=
set count=0
for /f "tokens=* delims= " %%b in ('type "!DataDir!\%%a"^|findstr /i "Date"') do call :getlines %%b
call :getrange !colcount! "!DataDir!\%%a"
(
echo #proc page
echo #if @DEVICE in png,gif
echo scale: 0.9
echo backgroundcolor: white
echo #endif
echo.
echo #proc getdata
echo file: !DataDir!\%%a
echo delimit: tab
echo fieldnames: !fieldnames!
echo.
echo #proc areadef
echo title: Disk Utilisation - !host!
echo titledetails: size=14 align=C adjust=0,0.2
echo rectangle: 1 1 8 4
echo areacolor: gray^(0.8^)
echo frame: width=1
echo xscaletype: date dd/mm/yyyy
echo xrange: !startdate! !linedate!+2
echo yrange: 0 100+3
echo.
echo #proc xaxis
echo stubs: inc 1 month
echo minorticinc: 7 days
echo stubformat: Mmm
echo.
echo #proc yaxis
echo label: Percent Available
echo stubs: inc 10
echo gridskip: min
echo ticincrement: 10 100
echo grid: color=gray^(0.7^)
echo.
for %%z in (!lines!) do (
set /a count=!count+1
echo #proc lineplot
echo xfield: Date
echo yfield: %%z
if !count! == 1 set color=red
if !count! == 2 set color=brightblue
if !count! == 3 set color=brightgreen
if !count! == 4 set color=yellow
if !count! == 5 set color=lightpurple
if !count! == 6 set color=orange
if !count! == 7 set color=powderblue
if !count! == 8 set color=coral
if !count! == 9 set color=green
echo linedetails: color=!color! width=1.5
echo legendlabel: %%z
echo.
)
echo #proc legend
echo format: singleline
echo location: min+0.2 min-0.4
echo outlinecolors: yes
echo sep 0.5
echo seglen: 0.2
)>"!DataDir!\temp.gra"
"!plpath!pl" "!DataDir!\temp.gra" -gif -o "!ReportPath!\images\!host!.gif"
)
del "!DataDir!\temp.gra"
echo Building daily graph report
(
echo ^<html^>
echo ^<head^>
echo ^<title^>Disk Trend !CustomTitle!^</title^>
echo ^<link href="!CSSFile!" rel="stylesheet" type="text/css"^>
echo ^</head^>
echo ^<body^>
echo ^<table width="100%%"^>
echo ^<tr^>
echo ^<td width="10"^>
echo ^<td align="left"^>Disk Trend !CustomTitle!^</td^>
echo ^<td align="right" valign="top" width="30%%"^>Last updated at %time:~0,-6% on %date%^</td^>
echo ^</tr^>
echo ^</table^>
echo ^<center^>
echo ^<table^>
)>"!ReportPath!\default.htm"
set count=0
for /f %%a in ('dir /b "!ReportPath!\images\*.gif"^|find /v /i "growth"') do (
if not !count! == 0 (
(
echo ^<tr height="10"^>
echo ^<td colspan="3"^>^ ^</td^>
echo ^</tr^>
)>>"!ReportPath!\default.htm"
)
(
echo ^<tr^>
echo ^<td colspan="2"^>^</td^>
echo ^<td^>
echo ^</tr^>
echo ^<tr^>
echo ^<td^>^</td^>
echo ^<td align="center"^>^<img src="images/%%a"^>^</td^>
echo ^<td^>^</td^>
echo ^</tr^>
echo ^<tr^>
echo ^<td^>^</td^>
echo ^<td^>^ ^</td^>
echo ^<td^>^</td^>
echo ^</tr^>
)>>"!ReportPath!\default.htm"
set /a count+=1
)
(
echo ^</table^>
echo ^</body^>
echo ^</html^>
)>>"!ReportPath!\default.htm"
:growth
if /i "!growthswitch!" == "nogrowth" goto end
echo Generating growth report
echo Reading data
for /f %%a in ('dir /b "!DataDir!\*.tsv"^|find /v "~"^|find /v /i "growth"') do (
set host=%%a
set host=!host:~0,-4!
set linedate=
set count=0
set curmonth=0
set tmpvar=
for /f "usebackq tokens=1* delims= " %%b in ("!DataDir!\%%a") do (
set linedate=%%b
set linemonth=!linedate:~6!!linedate:~3,2!
if !count! == 0 (
>"!DataDir!\~!host!.tsv" echo %%b %%c
) else (
if !linemonth! GTR !curmonth! (
set curmonth=!linemonth!
if not "!tmpvar!" == "" >>"!DataDir!\~!host!.tsv" echo !tmpvar!
)
set tmpvar=!linedate:~3! %%c
)
set /a count+=1
)
)
echo Calculating current growth
for /f %%a in ('dir /b "!DataDir!\~*.tsv"') do (
set host=%%a
set host=!host:~1,-4!
set linedate=
set count=0
set curmonth=0
set tmpvar=
for /f "usebackq tokens=* delims= " %%b in ("!DataDir!\%%a") do (
if !count! == 0 (
call :addcols %%b
) else (
call :docalc %%b
)
set /a count+=1
)
echo Disk Disk Size Months Average Growth Average Growth %% Average %%Change in Growth Status>"!DataDir!\stats-!host!.txt"
)
echo Calculating projected growth
for /f %%a in ('dir /b "!DataDir!\Growth-*.tsv"') do (
for /f %%c in ('type "!DataDir!\%%a"^|find /c "/"') do if %%c GTR 1 (
set datafile=%%a
set growthmax=0
set growthmin=0
for /f "tokens=2 delims=-" %%b in ("%%a") do set host=%%b
if not "!lastcheck!" == "!host!" echo Creating graphs for !host!
set lastcheck=!host!
for %%b in (linecount,yrange,count,fccount,disksize,grtotal,gravg,grpcntlast,grpcnt,grtotalpt,grptchange,grptchngtotal,grpcntavg,grptchngavg) do set %%b=0
set enddate=
set highgrowth=no
set status=limegreen
for /f "tokens=* delims= " %%b in ('type "!DataDir!\%%a"^|findstr /i "Date"') do call :getcols %%b
set linecount=0
for /f "usebackq tokens=1 delims= " %%b in ("!DataDir!\%%a") do (
set /a linecount+=1
if !linecount! == 2 (
set startdate=%%b
if "!startdate:~0,2!" == "01" (
set /a tmpstart=!startdate:~3!-1
set tmpstart=!tmpstart!12
) else (
set tmpstart=!startdate:~3!!startdate:~0,2!
set /a tmpstart=!tmpstart! - 1
)
set startdate=!tmpstart:~4!/!tmpstart:~0,4!
)
set enddate=%%b
if "!enddate:~0,2!" == "12" (
set /a fcstart=!enddate:~3! + 1
set fcstart=!fcstart!01
) else (
set /a fcstart=!enddate:~3!!enddate:~0,2! + 1
)
)
for /f "usebackq skip=1 tokens=2,4 delims= " %%b in ("!DataDir!\%%a") do set dskused=%%c&if %%b GTR !disksize! set disksize=%%b
for /f "usebackq skip=2 tokens=5 delims= " %%b in ("!DataDir!\%%a") do (
set /a fccount+=1
if not "%%b" == " " (
for /f %%c in ('clc !grtotal!+%%b') do set grtotal=%%c
for /f %%c in ('clc !grtotal!/!fccount!') do set gravg=%%c
if count GTR 1 set grpcntlast=!grpcnt!
for /f %%c in ('clc %%b/!disksize!*100') do set grpcnt=%%c&for /f %%d in ('clc !grtotalpt!+%%c') do set grtotalpt=%%d
for /f %%c in ('clc !grpcnt!-!grpcntlast!') do set grptchange=%%c&for /f %%d in ('clc !grptchngtotal!+%%c') do set grptchngtotal=%%d
for /f %%c in ('clc !grtotalpt!/!fccount!') do set grpcntavg=%%c
if !fccount! GTR 1 (
for /f %%c in ('clc !grptchngtotal!/^(!fccount!-1^)') do set grptchngavg=%%c
) else set grptchngavg=!grptchngtotal!
)
)
set /a reportmonths=!fccount!+1
set stats=!diskname!: !disksize! !reportmonths! !gravg:~0,-4! !grpcntavg:~0,-3! !grptchngavg:~0,-3!
for /f %%c in ('clc !grptchngavg!+!grpcntavg!') do set curgrowth=%%c||set curgrowth=0
set fcdate=!fcstart!
for /l %%b in (1,1,!growthmonths!) do (
for /f %%c in ('clc !disksize!*!curgrowth!/100') do set dskgrowth=%%c
for /f %%c in ('clc !dskused!+!dskgrowth!') do for /f "tokens=1 delims=." %%d in ("%%c") do if %%d LSS 0 (set dskused=0) else set dskused=%%c
for /f %%c in ('clc !disksize!-!dskused!') do set dskfree=%%c
echo !fcdate:~4!/!fcdate:~0,4! !disksize! !dskfree! !dskused! !dskgrowth! >>"!DataDir!\%%a"
if not "%%b" == "!growthmonths!" (
if "!fcdate:~4!" == "12" (
set /a fcdate=!fcdate:~0,4! + 1
set fcdate=!fcdate!01
) else set /a fcdate+=1
for /f %%c in ('clc !curgrowth!+!grptchngavg!') do set curgrowth=%%c
)
)
for /f "tokens=1 delims=." %%c in ("!dskused!") do if %%c GTR !disksize! set status=red
echo !stats! !status!>>"!DataDir!\stats-!host!.txt"
for /f "useback skip=1 tokens=2,5,7,8 delims= " %%b in ("!DataDir!\%%a") do (
if not "%%b" == "" if not "%%b" == " " for /f "tokens=1 delims=." %%f in ("%%b") do if %%f GTR !yrange! set yrange=%%f
if not "%%d" == "" if not "%%d" == " " for /f "tokens=1 delims=." %%f in ("%%d") do if %%f GTR !yrange! set yrange=%%f
if "%%c" == " " (
for /f "tokens=1 delims=." %%f in ("%%e") do (
if %%f GTR 999 set highgrowth=yes
if %%f LSS -999 set highgrowth=yes
if %%f GTR !growthmax! set growthmax=%%f
if %%f LSS !growthmin! set growthmin=%%f
)
) else if not "%%c" == "" (
for /f "tokens=1 delims=." %%f in ("%%c") do (
if %%f GTR 999 set highgrowth=yes
if %%f LSS -999 set highgrowth=yes
if %%f GTR !growthmax! set growthmax=%%f
if %%f LSS !growthmin! set growthmin=%%f
)
)
)
set /a yrange=!yrange! + ^( !yrange! / 20 ^)
(
echo #proc page
echo #if @DEVICE in png,gif
echo scale: 1.0
echo croprel: 0.1 0.3 0.3 0.1
echo backgroundcolor: white
echo #endif
echo.
echo #proc getdata
echo file: !DataDir!\!datafile!
echo delimit: tab
echo fieldnames: !fieldnames!
echo.
echo #proc areadef
echo title: Disk Growth - !diskname!: Drive on !host!
echo titledetails: size=14 align=C adjust=0,0.2
echo rectangle: 1 1 7 4
echo areacolor: gray^(0.7^)
echo frame: width=1.0
echo xscaletype: date mm/yyyy
echo xrange: 15/!startdate! 15/!fcdate:~4!/!fcdate:~0,4!
echo yrange: 0 !yrange!
echo.
echo #proc xaxis
echo stubs: inc 1 month
echo tics: none
echo stubformat: Mmm
echo.
echo #proc yaxis
echo label: GigaBytes
echo stubmult: 0.001
echo stubs: inc
echo grid: color=gray^(0.8^)
echo.
echo #proc bars
echo locfield: Date
echo lenfield: !diskname!-Total
echo color: green
echo barwidth: 0.18
echo legendlabel: !diskname!-Total
echo #proc bars
echo locfield: Date
echo lenfield: !diskname!-Used
echo color: brightblue
echo barwidth: 0.18
echo legendlabel: !diskname!-Used
echo #proc bars
echo locfield: Date
echo lenfield: Projected-Used
echo color: powderblue2
echo barwidth: 0.18
echo legendlabel: !diskname!-Used ^(forecast^)
echo.
echo #proc areadef
echo rectangle: 1 1 7 4
echo xscaletype: date mm/yyyy
echo xrange: 15/!startdate! 15/!fcdate:~4!/!fcdate:~0,4!
if "!highgrowth!" == "no" (
echo yautorange datafield=!diskname!-Growth,Projected-Growth nearest=10 margin=20
) else (
echo yautorange datafield=!diskname!-Growth,Projected-Growth nearest=1000 margin=20
)
echo.
echo #proc yaxis
if "!highgrowth!" == "no" (
echo label: Growth ^( MB / Month ^)
) else (
echo label: Growth ^( GB / Month ^)
echo stubmult: 0.001
)
echo labeldistance: -0.55
echo location: max
echo stubs: inc
echo stubdetails: adjust=0.25 align=L
echo ticlen: 0 0.05
echo.
echo #proc lineplot
echo xfield: Date
echo yfield: !diskname!-Growth
echo pointsymbol: fillcolor=red shape=triangle
echo linedetails: color=yellow width=1.5
echo legendlabel: !diskname!-Growth
echo #proc lineplot
echo xfield: Date
echo yfield: Projected-Growth
echo pointsymbol: fillcolor=blue shape=triangle
echo linedetails: color=dullyellow width=1.5
echo legendlabel: !diskname!-Growth ^(forecast^)
echo.
echo #proc legend
echo format: singleline
echo location: min+0.2 min-0.4
echo outlinecolors: yes
echo sep 0.5
echo seglen: 0.2
)>"!DataDir!\temp.gra"
"!plpath!pl" "!DataDir!\temp.gra" -gif -o "!ReportPath!\images\Growth-!host!-!diskname!.gif"
)
)
del "!DataDir!\temp.gra"
echo Building growth report
(
echo ^<html^>
echo ^<head^>
echo ^<title^>Disk Growth !CustomTitle!^</title^>
echo ^<link href="!CSSFile!" rel="stylesheet" type="text/css"^>
echo ^</head^>
echo ^<body^>
echo ^<table width="100%%"^>
echo ^<tr^>
echo ^<td width="10"^>^</td^>
echo ^<td align="left"^>Disk Growth !CustomTitle!^</td^>
echo ^<td align="right" valign="top" width="30%%"^>Last updated at %time:~0,-6% on %date%^</td^>
echo ^</tr^>
echo ^</table^>
echo ^<br^>
echo ^<center^>
echo ^<table width="680"^>
echo ^<tr^>
echo ^<td align="center"^>^<a href="growth-all.html"^>View All Graphs^</a^>^</td^>
echo ^</tr^>
echo ^</table^>
)>"!ReportPath!\growth.html"
for /f %%a in ('dir /b "!DataDir!\stats-*.txt"') do (
for /f %%c in ('type "!DataDir!\%%a"^|find /c ":"') do if %%c GTR 1 (
for /f "tokens=2 delims=-." %%b in ("%%a") do set host=%%b
for /f %%b in ('type "!DataDir!\%%a"^|find /c ":"') do set /a numdisks=%%b + 1
(
echo ^<table width="680"^>
echo ^<tr^>
echo ^<td width="80" align="center" rowspan="!numdisks!"^>!host!^<br^>^<a href="growth-!host!.html"^>View Graphs^</a^>^</td^>
echo ^<td^>Disk^</td^>
echo ^<td^>Disk Size ^(MB^)^</td^>
echo ^<td^>Months^</td^>
echo ^<td^>Average Growth ^(MB^)^</td^>
echo ^<td^>Average Growth ^(%%^) ^</td^>
echo ^<td^>Avg Change ^(%%^) ^</td^>
echo ^<td^>Status^</td^>
echo ^</tr^>
)>>"!ReportPath!\growth.html"
for /f "usebackq skip=1 tokens=1-7 delims= " %%b in ("!DataDir!\%%a") do (
(
echo ^<tr^>
echo ^<td align="center"^>%%b^</td^>
echo ^<td align="right"^>%%c^</td^>
echo ^<td align="center"^>%%d^</td^>
echo ^<td align="right"^>%%e^</td^>
echo ^<td align="right"^>%%f^</td^>
echo ^<td align="right"^>%%g^</td^>
echo ^<td STYLE="background: %%h; color=white;"^>^ ^</td^>
echo ^</tr^>
)>>"!ReportPath!\growth.html"
)
echo ^</table^>>>"!ReportPath!\growth.html"
)
)
(
echo ^<table width="680"^>
echo ^<tr^>
echo ^<td align="center"^>^<a href="growth-all.html"^>View All Graphs^</a^>^</td^>
echo ^</tr^>
echo ^</table^>
echo ^</body^>
echo ^</html^>
)>>"!ReportPath!\growth.html"
echo Building graphical reports
(
echo ^<html^>
echo ^<head^>
echo ^<title^>Disk Growth !CustomTitle! - All Servers^</title^>
echo ^<link href="!CSSFile!" rel="stylesheet" type="text/css"^>
echo ^</head^>
echo ^<body^>
echo ^<table width="100%%"^>
echo ^<tr^>
echo ^<td width="10"^>
echo ^<td align="left"^>Disk Growth !CustomTitle! - All Servers^</td^>
echo ^<td align="right" valign="top" width="30%%"^>Last updated at %time:~0,-6% on %date%^</td^>
echo ^</tr^>
echo ^</table^>
echo ^<center^>
echo ^<table^>
)>"!ReportPath!\growth-all.html"
set count=0
for /f %%a in ('dir /b "!ReportPath!\images\Growth-*.gif"') do (
if not !count! == 0 (
(
echo ^<tr height="10"^>
echo ^<td colspan="3" align="center"^>^ ^</td^>
echo ^</tr^>
)>>"!ReportPath!\growth-all.html"
)
(
echo ^<tr^>
echo ^<td colspan="2"^>^</td^>
echo ^<td^>
echo ^</tr^>
echo ^<tr^>
echo ^<td^>^</td^>
echo ^<td align="center"^>^<img src="images/%%a"^>^</td^>
echo ^<td^>^</td^>
echo ^</tr^>
echo ^<tr^>
echo ^<td^>^</td^>
echo ^<td^>^ ^</td^>
echo ^<td^>^</td^>
echo ^</tr^>
)>>"!ReportPath!\growth-all.html"
set /a count+=1
)
(
echo ^</table^>
echo ^</body^>
echo ^</html^>
)>>"!ReportPath!\growth-all.html"
for /f %%a in (!curdir!\servers.txt) do (
for /f %%b in ('dir /b "!ReportPath!\images\*.gif"^|find /c "Growth-%%a"') do if %%b GTR 0 (
(
echo ^<html^>
echo ^<head^>
echo ^<title^>Disk Growth !CustomTitle! - %%a^</title^>
echo ^<link href="!CSSFile!" rel="stylesheet" type="text/css"^>
echo ^</head^>
echo ^<body^>
echo ^<table width="100%%"^>
echo ^<tr^>
echo ^<td width="10"^>
echo ^<td align="left"^>Disk Growth !CustomTitle! - %%a^</td^>
echo ^<td align="right" valign="top" width="30%%"^>Last updated at %time:~0,-6% on %date%^</td^>
echo ^</tr^>
echo ^</table^>
echo ^<center^>
echo ^<table^>
)>"!ReportPath!\growth-%%a.html"
set count=0
for /f %%c in ('dir /b "!ReportPath!\images\Growth-%%a*.gif"') do (
if not !count! == 0 (
(
echo ^<tr height="10"^>
echo ^<td colspan="3"^>^ ^</td^>
echo ^</tr^>
)>>"!ReportPath!\growth-%%a.html"
)
(
echo ^<tr^>
echo ^<td colspan="2"^>^</td^>
echo ^<td^>
echo ^</tr^>
echo ^<tr^>
echo ^<td^>^</td^>
echo ^<td align="center"^>^<img src="images/%%c"^>^</td^>
echo ^<td^>^</td^>
echo ^</tr^>
echo ^<tr^>
echo ^<td^>^</td^>
echo ^<td^>^ ^</td^>
echo ^<td^>^</td^>
echo ^</tr^>
)>>"!ReportPath!\growth-%%a.html"
set /a count+=1
)
(
echo ^</table^>
echo ^</body^>
echo ^</html^>
)>>"!ReportPath!\growth-%%a.html
)
)
:logrotate
echo Pruning data
set yyyy=!today:~6!
set mm=!today:~3,2!
set dd=!today:~0,2!
set /a cutoff=!yyyy!-1
set /a cutoff=!cutoff!!mm!!dd!
if not exist "!DataDir!" echo Data directory !DataDir! does not exist&goto exit
echo Removing entries before !cutoff:~6!/!cutoff:~4,2!/!cutoff:~0,4!
for /f %%a in ('dir /b "!DataDir!\*.tsv"^|find /v "~"^|find /v "Growth-"') do (
for /f "usebackq tokens=1* delims= " %%b in ("!DataDir!\%%a") do (
if "%%b" == "Date" (
echo %%b %%c >"!DataDir!\tmp.txt"
) else (
for /f "tokens=1-3 delims=/" %%d in ("%%b") do set entrydate=%%f%%e%%d
if not "!entrydate!" LEQ "!cutoff!" (echo %%b %%c >>"!DataDir!\tmp.txt") else echo %%b discarded from %%a
)
)
if exist "!DataDir!\tmp.txt" (
if exist "!DataDir!\%%a.old" del "!DataDir!\%%a.old"
ren "!DataDir!\%%a" %%a.old
ren "!DataDir!\tmp.txt" %%a
)
)
del /q "!DataDir!\*.old">nul
goto end
:getlines
if "%1" == "" goto:eof
set fieldnames=
set lines=
set colcount=0
:loop1
set /a colcount+=1
set fieldnames=!fieldnames!%1
set tmpvar=%1
if "!tmpvar:~3!" == "Free" set lines=!lines!%1,
shift
if not "%1" == "" goto loop1
goto:eof
:getrange
for /f "usebackq tokens=1-%1 delims= " %%b in (%2) do (
set /a daycount=!daycount!+1
if !daycount! == 2 set startdate=%%b
set linedate=%%b
)
goto:eof
:getcols
if "%1" == "" goto:eof
set fieldnames=
set lines=
set colcount=0
:loop1
set /a colcount+=1
set fieldnames=!fieldnames!%1
set tmpvar=%1
if "!tmpvar:~2!" == "Free" set diskname=!tmpvar:~0,1!
shift
if not "%1" == "" goto loop1
goto:eof
:addcols
set tmpvar=%1
shift
set diskcount=1
:loop2
set curdisk=%1
set curdisk=!curdisk:~0,1!
echo !tmpvar! %1 %2 %3 !curdisk!-Growth Projected-Free Projected-Used Projected-Growth>"!DataDir!\Growth-!host!-!diskcount!.tsv"
shift
shift
shift
shift
set /a diskcount+=1
if not "%1" == "" goto loop2
goto:eof
:docalc
set tmpvar=%1
shift
set curdisk=0
set diskcount=1
:loop3
set /a lastmonth=!count!-1&set lastmonth=month!lastmonth!
set /a curdisk+=1
for /l %%n in (1,1,12) do if !count! == %%n set month%%ndisk!curdisk!=%3
set lastval=!lastmonth!disk!curdisk!
set /a growth=%3-!lastval!
if not !count! == 1 (
echo !tmpvar! %1 %2 %3 !growth! >>"!DataDir!\Growth-!host!-!diskcount!.tsv"
) else (
echo !tmpvar! %1 %2 %3 >>"!DataDir!\Growth-!host!-!diskcount!.tsv"
)
shift
shift
shift
shift
set /a diskcount+=1
if not "%1" == "" goto loop3
goto:eof
:starterror
echo Incorrect switch! command line arguments are one of:
echo -graphonly - Only generates the daily trend graph, no data collection
echo -growthonly - Only generates the growth table and graphs, no data collection
echo -nogrowth - Does not generate the growth table and graphs
:end
del /q "!DataDir!\*.srv"
del /q "!DataDir!\~*.tsv"
del /q "!DataDir!\Growth-*.tsv"
del /q "!DataDir!\stats-*.txt"
echo Done.
endlocal
Like this:
Like Loading...