检测远程桌面是否有批处理活动
问题描述:
因此,我一直在搜寻互联网,试图找到一种方法来检测远程桌面是否正在运行。我真的从来没有找到我想找的东西,所以我开始着手自己做。我发现,当我query user
我得到以下结果:检测远程桌面是否有批处理活动
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
>michaelh rdp-tcp#0 1 Active none 9/29/2014 11:14 AM
所以我用一个for loop
找到并掰开我所需要的线。这是我想出的:
@ECHO off
setlocal EnableDelayedExpansion
for /f "tokens=2,4" %%a in ('QUERY USER ^| FINDSTR ">"') DO (
set "consoleTemp=%%a"
set "connectionState=%%b"
set "consoleType=!consoleTemp:~0,7!"
)
SET consoleTypeCorrect=
IF "!consoleType!"=="rdp-tcp" SET consoleTypeCorrect=1
SET connectionStateCorrect=
IF "connectionState"=="Active" SET connectionStateCorrect=1
set TRUE=
set TRUE=%connectionStateCorrect%%consoleTypeCorrect%
IF "%TRUE%"=="11" (
echo You are connected via !consoleType!
) else (
ECHO Sorry, the console type is !consoleType!
)
endlocal
PAUSE
这很好,但我的问题是你们会有这样做的更好的方法吗?如果你正在看这个,不明白它是如何工作的,那么下午/给我发电子邮件,我会解释它。
答
感谢@David Ruhmann为您提供的信息!如果没有更好的方法来检测RDP是否连接,我会将其作为我的回答发布。
@ECHO off
setlocal EnableDelayedExpansion
for /f "tokens=2,4" %%a in ('QUERY USER ^| FINDSTR ">"') DO (
set "consoleTemp=%%a"
set "connectionState=%%b"
set "consoleType=!consoleTemp:~0,7!"
)
SET consoleTypeCorrect=
IF "!consoleType!"=="rdp-tcp" SET consoleTypeCorrect=1
SET connectionStateCorrect=
IF "connectionState"=="Active" SET connectionStateCorrect=1
set TRUE=
set TRUE=%connectionStateCorrect%%consoleTypeCorrect%
IF "%TRUE%"=="11" (
echo You are connected via !consoleType!
) else (
ECHO Sorry, the console type is !consoleType!
)
endlocal
PAUSE
+1
谢谢!在Windows 8中也很好用 – Johncze 2014-11-13 09:26:29
根据你的消息,你似乎只是检查当前用户。如果是这样,请将用户名添加到命令'query user%username%'中。至于方法,你有什么工作,很简单,所以我没有更好的方法。 – 2014-10-03 17:33:16
@DavidRuhmann我不关心用户是谁,因为我在做什么。我只需要检查活动连接是否为rdp。如果在使用批处理来运行rdp时有一种方法来填充密码,我会这样做,但我找不到任何东西。 – 2014-10-07 15:04:40
另一种方式(作为'查询'不适用于我的Windows):给命令窗口一个唯一的名称:'title UniqueStringToIdentify',获得'tasklist/v | find“UniqueStringToIdentify”,处理输出的方式与'query ' – Stephan 2014-10-10 08:23:38