2017-04-11 13 views
-4

我不知道如何製作一個可以使用vbyesvbno的.bat文件。如何製作一個可以在消息框中評估用戶提示答案的批處理文件?

我嘗試這樣做:

@echo off 
color 0a 
cls 
echo Hi %USERNAME% 
pause >nul 

echo a = msgbox("Hello",4+16,"Hi bruh")>hi.vbs 
start hi.vbs 
if a = vbYes then goto hello2 
else 
goto hello1 
pause >nul 

:hello 
echo Hello1 
pause >nul 
exit 

:hello2 
echo Hello2 
pause >nul 
exit 

但沒有奏效。我究竟做錯了什麼?

+1

鑑於*正確寫入* .vbs文件,您可以獲取它返回值:[如何從VBScript控制檯應用程序返回退出代碼](http://stackoverflow.com/q/187040/1115360)。然後,您可以使用'errorlevel'在批處理文件中檢查該值:[使用批處理文件中的errorlevel來知道程序是否正常退出](http://stackoverflow.com/a/17076252/1115360)。如果那是你想要做的。 –

回答

1

您不能在批處理文件中使用VBScript常量或變量。你需要有VBScript的返回MsgBox的狀態代碼作爲其退出代碼,然後在你的批處理腳本評估%errorlevel%變量:

>hi.vbs echo a = MsgBox("Hello",4+16,"Hi bruh") 
>>hi.vbs echo WScript.Quit a 

cscript //nologo hi.vbs 
set "exitcode=%errorlevel%" 

if %exitcode% equ 6 then goto hello2 
if %exitcode% equ 7 then goto hello1 
0

您不能直接使用VBScript常量也不在批處理文件中的代碼;您需要明確定義所需常量的值並創建與.BAT分離的.VBS文件。然而,在另一種類似於VBScript的編程語言在幾個方面被稱爲JScript可以通過一個簡單的技巧在相同的批處理.BAT文件中使用;您只需在這些行之間包含批處理代碼:

@set @x=0 /* 


rem End of Batch section */ 

...並將JScript代碼放在文件末尾。例如:

@set @x=0 /* 

@echo off 
color 0a 
cls 
echo Hi %USERNAME% 
pause >nul 

rem Define some useful constants 
set /A vbYes=6, vbNo=7 

rem Execute *this same* Batch file as a JScript one 
cscript //nologo //E:JScript "%~F0" 
if %errorlevel% == %vbYes% (
    echo Hello2 = Yes 
) else (
    echo Hello1 = No 
) 
pause >nul 
exit 

rem End of Batch section */ 

// Start of JScript section 

// Usage of Popup method: .Popup(strText,[nSecondsToWait],[strTitle],[nType]) 

var WshShell = WScript.CreateObject("WScript.Shell"); 
WScript.Quit(WshShell.Popup("Hello",0,"Hi bruh",4+16)); 

VBScript中的許多工具與JScript中的工具非常相似,只是細節上有所不同。例如,VBScript msgbox在JScript中被稱爲Popup method,所以從一種語言到另一種語言的短代碼段的轉換應該沒有問題...

相關問題