I have scripted Quota.bat to implement a shared folder quota system on a 'server'.

For each 'server' that you implement, Quota.bat will detect if the shared folder(s) on the 'server' have exceeded your limit(s), and if so, for each shared folder whose limit is exceeded, Quota.bat will prevent additional writes to the share, and send an email to as many 'share managers' as you desire.

Quota.bat uses the following freeware:
. RMTShare.exe
. Du.exe
. BLAT.exe

To implement Quota.bat on a 'server':

1. Define three (3) files in the same folder as Quota.bat:

   <b>Quota_wait.txt</b>     contains a single entry, the number of seconds to wait between each quota checking cycle.
                      If you type <b>60</b>, <b>Quota.bat</b> would wait 1 minute.
                      If you type <b>300</b>, <b>Quota.bat</b> would wait 5 minutes.

   <b>Quota_msgtxt.txt</b>   contains the fixed text of a message that will be send to each 'share manager'
                      when a quota is exceeded. It can be as simple as:
                      <b>Quota.bat detected that the subject limit has been exceeded.</b>
                      since the message subject contains the computer name, local share folder name,
                      quota limit that you set, and the size detected.

   <b>Quota_limit</b>        each line contains the configuration parameters for a share on this 'server':
                      <b>Folder Path<font size="+1">,</font>Limit<font size="+1">,</font>RMTSHARE command<font size="+1">,</font>email addresses</b>
                             <b>Folder Path</b>      is the local path to the shared folder, like C:\Users.

                             <b>Limit</b>            is the maximum number of megabytes allowed.

                             <b>RmtSHARE command</b> is the <b>RMTShare</b> command that changes the share
                                              permissions to <b>R</b>ead. If C:\Folder\Accounting is shared as
                                              <b>\\ComputerName\ShareName</b> and the domain groups
                                              "Accountants" and "Accounts Payable" in the <b>JSIINC.COM</b> domain
                                              had <b>Full Control</b> or <b>Change</b> permission, use:
                                              <font size="1"><b>rmtshare \\ComputerName\ShareName /GRANT "JSIINC\Accountants":R /GRANT "JSIINC\Accounts Payables":R</b></font>

                            <b>email addresses</b>   is the comma separated list of email addresses that should be
                                              notified when the quota is exceeded, like:

2. Start <b>Quota.bat</b>. I use a Scheduled Task that is configured to run <b>Quota.bat</b> when the computer starts.
NOTE: When a quota is exceeded, after correcting the situation, delete the Folder Path line from the Quota_Exceeded.txt file that is created in the same folder as Quota.bat, and reset the share permissions to allow writing.

Quota.bat contains:

@echo off
set where=%~DP0
set wait="%where%Quota_wait.txt"
set limit="%where%Quota_limit.txt"
set msgtxt="%where%Quota_msgtxt.txt"
set exceeded="%where%Quota_Exceeded.txt"
if not exist %wait% @echo %wait% does not exist&endlocal&goto :EOF
if not exist %limit% @echo %limit% does not exist&endlocal&goto :EOF
if not exist %msgtxt% @echo %msgtxt% does not exist&endlocal&goto :EOF
for /f "Tokens=*" %%a in ('type %wait%') do (
 if "%%a" NEQ "" set /a seconds=%%a + 1
@ping -n %seconds%>nul
for /f "Tokens=1-3* Delims=," %%a in ('type %limit%') do (
 set Folder=%%a
 set /a max=%%b
 set rmtcmd=%%c
 set blat=blat %msgtxt% -to %%d
 for /f "Tokens=*" %%x in ('du -q !Folder!^|find "Size:"') do (
  set size=%%x
  set size=!size:* =!
  set size=!size: bytes=!
  set size=!size: =!
  set size=!size:,=!
  call :quotaX !size!##
goto Loop
set lx=%1
set /a cnt=0
set /a cnt=%cnt% + 1
call set wrk=%%lx:~%cnt%^,1%%
if "%wrk%" NEQ "#" goto quotaXs
set /a cnt=%cnt% - 6
call set /a sz=%%lx:~0,%cnt%%%
if %sz% LSS !max! goto :EOF
set ex=%ComputerName%!Folder!!max!
set OK=Y
for /f "Tokens=*" %%i in ('@echo %ex%^|findstr /l /i /G:%exceeded%') do (
 set OK=N
if "%OK%" EQU "N" goto :EOF
@echo %ex%>>%exceeded%
set subject=!blat! -s "Quota %ComputerName% !Folder! exceeded !max! - !sz!."