0

ネストされたループから抜け出すのはかなり簡単であることは知っていますが、サーバーの複数のリストを操作しているときにどうすればよいかわかりません。シナリオは次のとおりです。

目標: 特定のユーザー 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
)

)

)

)

)   
4

1 に答える 1