我知道打破嵌套循环相当容易,但是,当我使用多个服务器列表时,我不确定如何去做。这是场景:
目标:在与特定用户 ID 匹配的服务器上搜索会话,并终止找到的任何断开连接的会话
问题:我有多个农场列表。我想循环浏览列表,直到找到用户会话,然后在该列表完成时停止(在会话清除时不停止,他们可能在场中有多个会话)。
Farmlist1.txt farmlist2.txt farmlist3.txt
如果在farmlist2.txt 中找到会话,我想在该列表中完成搜索,但不要继续farmlist3.txt。
这是我到目前为止所拥有的,它就像一个魅力。(欢迎优化)
@echo off
echoCitrix Session Reset
echo.
echo This will look for a specific userID AND kill disconnected sessions on all servers!
set /p userid=User ID of the user:
for %%a in (q:\scripts\1common\citrixlists\*.txt) do (
for /f "tokens=*" %%l in (%%a) do (
ping %%l -n 1 | find /i "TTL=" > nul
if errorlevel 1 (
echo server %%l down or out of Load
) else (
echo Looking for %username% and killing disconnected sessions on %%l
for /f "tokens=3" %%b in ('qwinsta *tcp /server:%%l ^| find /i "%userid%"') do echo %%b | rwinsta %%b /server:%%l && echo SESSION FOR %userid% KILLED ON %%l
for /f "tokens=2" %%i IN ('qwinsta /server:%%l ^| find /i "disc"') DO (
if %%i gtr 0 (
rwinsta %%i /server:%%l && echo Disconnected sessions terminated
)
)
)
)
)