如何使用BATCH命令检测用户在控制台与后台任务中的输入?

时间:2012-05-04 15:15:28

标签: session batch-file background task

我想知道如何检测计算机后面是否有人使用Windows Server终端/控制台启动一组BATCH脚本,或者是否有自动启动这些脚本的后台任务。 我必须使用简单的批处理脚本来检测它。

我一直在网上寻找这两种“用户”之间可能存在的差异,但我找不到任何有用的东西。欢迎使用任何解决方案:击键捕获,重定向标准输入,终端/控制台会话ID等。我尝试了所有这些,但直到现在才成功。

该解决方案必须适用于Windows Server 2003,2008和2008 R2。 但是首先,我很高兴看到它只适用于WS 2003。

提前感谢您的回答!

2 个答案:

答案 0 :(得分:1)

我想我真的不明白你对“如何检测电脑后面是否有人”的意思。但是,在this post,有一种方法可以检测是否将STDIN重定向到磁盘文件,这可能意味着没有人输入此批处理文件的输入,但这是开始的以自动方式。例如:

TypeOfHandle 0
if %errorlevel% geq 128 (
    rem STDIN redirected to disk file
    echo This program must be executed in interactive (not predefined-input) way^!
    goto :EOF
)
set /P input=Enter input please: 
etc...

我希望它有所帮助...

答案 1 :(得分:0)

If /i "%cmdcmdline:~0,6%"=="cmd /c" pause

对于双击的批处理文件通常是这样。

@for /f "tokens=10* delims=," %A in ('tasklist /fi "SESSION ne 1" /fi "imagename eq cmd.exe" /v /nh /fo CSV') do echo %A

将列出cmd标题在其他会话中运行。