2012-05-04 9 views
1

Windows Server Terminal/Consoleを使用してBATCHスクリプトを起動するコンピュータの背後に人がいるかどうか、またはこれらのスクリプトを起動する自動バックグラウンドタスクがあるかどうかを検出する方法を知りたいと思います。 単純なバッチスクリプトを使用してこれを検出する必要があります。BATCHコマンドを使用して、コンソールとバックグラウンドタスクでユーザーの入力を検出する方法はありますか?

私はこれらの2つのタイプの「ユーザー」の違いについてインターネットで調べていますが、役に立たないものは見つかりませんでした。キーストロークキャプチャ、リダイレクトされた標準入力、ターミナル/コンソールセッションIDなどのあらゆる解決策が歓迎されています。私はこれらすべてを試しましたが、これまで成功することはできませんでした。

解決策は、Windows Server 2003,2008および2008 R2で動作する必要があります。 しかし、まずはWS 2003だけでうまくいくことを嬉しく思っています。

ありがとうございました!

答えて

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... 
私はそれが役に立てば幸い

...

+0

+1しかし、私は入力がリダイレクトされるかどうかはわかりません。バッチは単純にユーザによって開始されるか、 'autostart'のような自動のものによって開始されると思います。 – jeb

+0

Btw。 'echo ...(not defined-input ^)way ^!'の最後の括弧をエスケープする必要があります。 – jeb

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のタイトルを表示します。

関連する問題