@echo off setlocal enableDelayedExpansion
rem Nom du serveur set serv=%1
rem Durée en minutes avant deconnection set wmin=%2
rem Nombre de message affichés avant logout set wboucle=%3
rem Message affiché. set mesg="Please save your work and log out, this server will be restarted in"
echo Envoi de message vers le serveur Citrix : %serv% echo Délai de prévenance : %wmin% minutes echo Boucle : %wboucle% echo Message : %mesg%
set /a wsec=%wmin%*60
rem echo %wsec% sec
QUSER /SERVER:%serv% 2>null if %errorlevel% NEQ 0 ( echo "No users" goto fin )
for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do echo %%b va être deconnecté. for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do LOGOFF %%b /SERVER:%serv% /V
:message QUSER /SERVER:%serv% 2>null if %errorlevel% NEQ 0 ( echo "No users Disc" goto fin )
echo boucle : %wboucle% de %wmin% mn. if %wboucle% neq 0 ( set /a wtimeout=!wmin!*!wboucle! set wmesg=!mesg! !wtimeout! minutes. for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:!serv! ^|findstr "Activ" ') do MSG %%b /SERVER:!serv! /TIME:30 !wmesg! for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do LOGOFF %%b /SERVER:%serv% /V TIMEOUT /T !wsec! /NOBREAK >nul set /a wboucle=%wboucle%-1 goto :message )
for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do echo %%b va être deconnecté. for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Disc" ') do LOGOFF %%b /SERVER:%serv% /V for /f "tokens=1 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Activ" ') do echo %%b Log off. for /f "tokens=2 delims= " %%b in ('QUSER /SERVER:%serv% ^|findstr "Activ" ') do LOGOFF %%b /SERVER:%serv% /V
:fin QUSER /SERVER:%serv% 2>null exit /B 0