2012-05-04 2 views
1

Windows 서버 터미널/콘솔을 사용하여 BATCH 스크립트를 실행하는 컴퓨터 뒤에 사람이 있는지 또는 해당 스크립트를 시작하는 백그라운드 작업이 자동화되는지 여부를 확인하는 방법을 알고 싶습니다. 간단한 배치 스크립트를 사용하여이를 감지해야합니다.BATCH 명령을 사용하여 콘솔 대 백그라운드 작업에서 사용자 입력을 감지하는 방법은 무엇입니까?

저는 인터넷에서이 두 가지 유형의 '사용자'간에 가능한 차이점을 찾아 보았지만 도움이되는 정보는 찾을 수 없습니다. 모든 솔루션을 환영합니다 : 키 입력 캡처, 리디렉션 된 표준 입력, 터미널/콘솔 세션 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 제목을 실행합니다.

관련 문제