2017-05-08 35 views
0

即時通訊批處理腳本新。我想知道是否有一種方法可以在不使用choice.exe的情況下編寫定時提示,因爲我使用的是windows xp。沿線的東西:批處理窗口XP時間提示沒有choice.exe

@echo off 
/set p answer=input y or n in 30 seconds 
rem start timer 
if answer==y(
    goto :action1 
) 
if answer==n(
    goto action2 
) 
rem if timer has expired without input go to :action1 

:action 1 
echo you have entered y 
:action 2 
echo you have entered n 

謝謝你的提示。

回答

0

這裏有一個想法。您可以使用Wscript.ShellPopup()方法。它包含一個超時參數。 Yes/No對話框會在Yes上返回6,在No上返回7,在超時時返回-1。這很容易轉換爲布爾true在是/超時,false在沒有。保存這個.bat擴展名,你會看到它是如何工作的。

@if (@CodeSection == @Batch) @then 
@echo off & setlocal 

set delay=30 
set "msg=Do you wish to continue?" 

cscript /nologo /e:JScript "%~f0" "%msg%" %delay% && (
    goto yes 
) || (
    goto no 
) 

:yes 
echo You chose yes. 
exit /b 

:no 
echo You chose no. 
exit /b 

@end // end Batch/begin JScript hybrid code 

var osh = WSH.CreateObject('WScript.Shell'), 
    msg = WSH.Arguments(0), 
    secs = WSH.Arguments(1); 

var response = osh.Popup(msg, secs, 'Waiting for response', 4 + 32); 
// yes or timeout returns true; no returns false 
WSH.Quit(!(response - 7)); 
0

你可以試試這個:

EditVar and Choose

選擇類似於微軟的選擇工具,但它有更多的功能。以下是可能更適合選擇的一些原因:

  • 當用戶做出無效選擇時,它不發出嗶嗶聲。

  • 它提供了一個「默認鍵」功能,可讓用戶按下Enter鍵來選擇默認選項。

  • 它帶有一個實模式DOS版本(對於MS-DOS引導介質很有用)。 當您在單獨的控制檯窗口中運行多個實例(這是早期的Win32控制檯版本的Microsoft選擇工具的問題)時,Win32版本的超時功能不會感到困惑。

  • 提供64位版本。

  • 它可以抑制用戶選擇的顯示。

  • 它提供了一個「線路輸入」模式,用戶在進行>選擇後必須按Enter鍵。

這是一個例子:

CHOOOSE64.exe -c YNA -d A -n -p "Prompt" -t A,30 
rem   -Choices 
rem     -Default 
rem      -No default prompt 
rem       -Prompt(custom) 
rem          -timeout defaultChoice, timeout in seconds 

if %errorlevel%==1 echo Y 
if %errorlevel%==2 echo N 
if %errorlevel%==3 echo A or timeout-ed