2009-09-17 3 views
6

저는 cscript.exe에서 실행되는 JScript 프로그램을 작성하고 있습니다. 스크립트 내에서 명령 줄 명령을 실행할 수 있습니까? 동일한 작업을 수행하기 위해 jscript에 더 많은 코드를 작성하는 대신 특정 명령을 실행할 수 있으므로 실제로 작업이 쉬워집니다.WSH (Windows Scripting Host) cscript.exe에서 JScript (자바 스크립트 아님)에서 명령 줄 명령을 실행하는 방법이 있습니까?

예를 들어

: 10 초 동안 키 누르기 대기하기 위해, 나는 바로 타임 아웃 명령

timeout /t 10 

JScript의이 더 많은 작업을 의미 구현을 사용할 수 있습니다. btw, Vista 및 WSH v5.7입니다.

아이디어가 있습니까? 고맙습니다!

답변

8

당신은 DOS가 WshShell.Run 방법을 사용하여 명령을 실행할 수 있습니다 특별히 키를 누르거나 제한 시간이 경과 할 때까지 스크립트 실행을 일시 중지해야하는 경우

var oShell = WScript.CreateObject("WScript.Shell"); 
oShell.Run("timeout /t 10", 1 /* SW_SHOWNORMAL */, true /* bWaitOnReturn */); 


, 당신은 달성 할 수 이것은 WshShell.Popup 메서드 (시간 초과 옵션이있는 대화 상자)를 사용하는 것입니다.

그러나이 방법은 cscript로 실행할 때도 메시지 상자를 표시합니다. How Can I Pause a Script and Then Resume It When a User Presses a Key on the Keyboard? 간단히 말해서 WScript.StdIn 속성을 사용하여 입력 스트림에서 직접 읽고이 방법으로 입력을 기다릴 수 있습니다. 그러나 입력 스트림에서 읽는 것은 시간 제한을 지원하지 않으며 ENTER 키를 누를 때만 반환됩니다 (키가 아님). 어쨌든, 여기에 단지의 경우, 예입니다 : 도움말 PPL에 대한

WScript.Echo("Press the ENTER key to continue..."); 

while (! WScript.StdIn.AtEndOfLine) { 
    WScript.StdIn.Read(1); 
} 
+0

! 고맙습니다 – detj

1

고맙습니다, 이것은 내 첫 번째 게시물과 유래는 굉장했다! 또한, oShell.SendKeys() 메서드를 사용하여이 작업을 수행하는 또 다른 방법을 찾았습니다.

var oShell = WScript.CreateObject("WScript.Shell"); 
oShell.SendKeys("cls{enter}timeout /t 10{enter}"); 

이 방법은 새로운 프로세스 또는 창

편집을 산란하지 않고 거의 모든 도스 명령을 실행할 수 있습니다 :
방법은 다음과이 문제를 해결하는 것 같지만,이 코드는 매우 신뢰할 수 없습니다. 아래의 설명을 참조하십시오

+0

SendKeys 문자열이 잘못되었습니다 - "cls {enter} timeout/t 10 {enter}"(+ 기호 제외) 여야합니다. – Helen

+0

또한 귀하의 변종은 매우 신뢰할 수 없습니다. 우선,'SendKeys'는 활성 창에 키 입력을 보내므로 우연히 활성화 된 다른 창으로 입력이 전송 될 수 있습니다. 또한,'SendKeys' 다음에 명령이 있다면'SendKeys' 이후에 실행되지 않습니다. 'SendKeys'의 전후에'WScript.Echo' 명령을 넣고 입력 문자열에서'cls'를 제거하면 스크립트 출력이 엉망이고'timeout' 명령이 마지막으로 실행되는 것을 볼 수 있습니다. – Helen

+0

예 ..이 코드는 정말 지저분합니다!일단 나머지 코드와 함께 실행하면 문제가 발생하기 시작합니다. SendKeys를 사용하면 명령문이 반드시 실행되는 것은 아닙니다. SendKeys()에서 WScript.StdIn.Readline()을 사용하면 사용자가 입력을 기다리지 않고 SendKeys에서 이미 입력을 받고있어 더러운 방법으로 깨지기 때문에 더 악화됩니다! 수업 교실 : SendKeys에 매우 조심하십시오. 멍청 할 수도 있습니다. 위대한 통찰력의 헬렌! – detj

관련 문제