Zone mes classes

Pourquoi ?

Dans le lycée, il y a plus de 80 classes, le parcours du dossier mes classes est pénible (il en va de même pour les zones dépose travail et énoncés)

On a donc créer une ressource mes_classes qui contient les zones_eleves du prof ainsi que les zones énoncés et dépose travail des classes du professeur.


Principe :

Préparation de la zone mes classes :

Compléter le fichier cmesclasses.ini suivant :

SRVMESCLASSES=srv-etk-2003
DRIVEMESCLASSES=D:
DOSMESCLASSES=mes_classes
SHAREMESCLASSES=mes_classes

Le fichier prepmesclasses.bat va créer la zone mes classes

Ensuite, il faut créer les zones à partir d'un fichier txt sous la forme :

login;clases1;classe2;...

On exécute les script mesclasses.vbs ci dessous qui crée un dossier pour chaque professeur avec deux sous dossiers enonces et depose_travail.

On copie ensuite les classe à partir de zone_eleves dans le répertoire prof et on crée des raccourcis de ces classes vers les zones dépose travail et énonces dans les deux sous répertoires.

Enfin, mesclassesacl.bat met à jour les sécurités (lecture pour l'enseignant dans son répertoire) il utilise setacl ( http://setacl.sourceforge.net/index.html).


prepmesclasses.bat


for /f "tokens=1,2 delims==" %%i in (cmesclasses.ini) do set %%i=%%j

MD \\%SRVMESCLASSES%\%DRIVEMESCLASSES%$\%DOSMESCLASSES%

RMTSHARE \\%SRVMESCLASSES%\%SHAREMESCLASSES%=%DRIVEMESCLASSES%:\%DOSMESCLASSES% /UNLIMITED /GRANT administrateurs:F

RMTSHARE \\%SRVMESCLASSES%\%SHAREMESCLASSES% /GRANT lesprofesseurs:R

crmesclasses.vbs

Dim objFSO
Const ForReading = 1, ForWriting = 2, ForAppending = 8

const strClasses="mesclasses.txt" ' le fichier d'entrée

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextRscIni = objFSO.OpenTextFile("Rsrc.ini")
srv = split(objTextRscIni.Readline, "=")
share = split(objTextRscIni.Readline, "=")
objTextRscIni.Readline
strEnonce="\\"&srv(1)&"\"&share(1)&"\" ' la zone enonces

srv = split(objTextRscIni.Readline, "=")
share = split(objTextRscIni.Readline, "=")
objTextRscIni.Readline
strDepose="\\"&srv(1)&"\"&share(1)&"\" ' la zone deposetravail

srv = split(objTextRscIni.Readline, "=")
share = split(objTextRscIni.Readline, "=")
objTextRscIni.Readline
strZoneEleves="\\"&srv(1)&"\"&share(1)&"\" ' la zone eleves
objTextRscIni.Close

Set objTextMesclasses = objFSO.OpenTextFile("cmesclasses.ini")
temp = split(objTextMesclasses.Readline, "=")
srvMesClasses=temp(1)

temp = split(objTextMesclasses.Readline, "=")
Drive=temp(1)

temp = split(objTextMesclasses.Readline, "=")
DirMesClasses=Drive&temp(1)

temp = split(objTextMesclasses.Readline, "=")
shareName=temp(1)
objTextMesclasses.Close

strMesClasses="\\"&srvMesClasses&"\"&shareName&"\" ' la zone mes classes
wscript.echo strMesClasses
Set objFoldermesClasses = objFSO.GetFolder(strMesClasses)
Set objTextFile = objFSO.OpenTextFile(strWorDir&strClasses, ForReading)

Do While objTextFile.AtEndOfStream <> True
arrCol = split(objTextFile.Readline, ";")
prof=arrCol(0)
nbClasses=Ubound(arrCol,1)
if objFSO.Folderexists(strMesClasses&prof) then
objFSO.deleteFolder strMesClasses&prof
End IF
objFSO.CreateFolder(strMesClasses&prof)
objFSO.CreateFolder(strMesClasses&prof&"\enonces")
objFSO.CreateFolder(strMesClasses&prof&"\depose_travail")
for i = 1 to nbClasses
'objFSO.CreateFolder(strMesClasses&prof&"\"&arrCol(i))
objFSO.CopyFolder strZoneEleves&arrCol(i), strMesclasses&prof&"\"&arrCol(i)
Call rac(strMesClasses&prof&"\depose_travail\"&arrCol(i)&".lnk", "%windir%\explorer.exe", "/e,/root," & strDepose&arrCol(i), strDepose&arrCol(i)& "\", 1, "%windir%\explorer.exe,1")
Call rac(strMesClasses&prof&"\enonces\"&arrCol(i)&".lnk", "%windir%\explorer.exe", "/e,/root," & strEnonce&arrCol(i), strEnonce&arrCol(i)& "\", 1, "%windir%\explorer.exe,1")
Next
Loop

Sub Rac(sUnc, target, arg, wrkdir, style, icon)
Dim ORaccourci
Set objShell = WSCript.CreateObject("WSCRIPT.Shell")
Set ORaccourci = objShell.CreateShortCut(sUnc)

ORaccourci.TargetPath=target
ORaccourci.Arguments=arg
ORaccourci.WorkingDirectory=wrkdir
ORaccourci.WindowStyle=style
if icon <>"" then
ORaccourci.IconLocation=icon
end if
ORaccourci.save
End Sub

mesclasseacl.bat

rem @echo off
for /f "tokens=1,2 delims==" %%i in (cmesclasses.ini) do set %%i=%%j

NET USE W: /DELETE
NET USE W: \\%SRVMESCLASSES%\%DRIVEMESCLASSES%$
W:
CD %DOSMESCLASSES%

FOR /d %%i in (*) do (
C:\GESTRP\setacl.exe -on W:\%DOSMESCLASSES%\%%i -ot file -actn ace -ace "n:%USERDOMAIN%\%%i;p:read_ex"
)
C:
NET USE W: /DELETE