1

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

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

该解决方案必须适用于 Windows Server 2003、2008 和 2008 R2。但首先,我很高兴看到它仅在 WS 2003 上运行。

预先感谢您的回答!

4

2 回答 2

1

我想我不太明白您所说的“如何检测计算机后面是否有人”是什么意思。但是,在这篇文章中,有一种方法可以检测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...

我希望它有帮助...

于 2012-05-06T19:05:24.687 回答
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 标题。

于 2014-09-25T07:49:21.327 回答