2012-08-03 140 views
1

我正在運行批處理腳本和用戶必須訪問數據庫的某處。VBScript和批處理交互

此時,用vbscript製作的窗口會提示要求用戶輸入登錄名和密碼。 (確定,取消按鈕)

如果OK後的憑證是正確的,則該批次將按照planA繼續,否則批次將執行其他操作到planB。如果(取消),它會返回到批次和主菜單。

這就是我一直在掙扎:

@echo off 

:Ini 
echo [1] Access database 
echo [2] Main menu 
echo: 
set /p Quest= What do you prefer (1/2)?   
if not '%Quest%'=='' set Quest=%Quest:~0,1% 
if '%Quest%'=='1' goto VBS 
if '%Quest%'=='2' goto BATCH 
echo Invalid option, please try again 
cls 
goto Ini 

:BATCH 
echo Heading for main menu ... 
goto Main 

:VBS 
:wscript.echo InputBox("Enter your password","VBScript-Batch") 
findstr "^:" "%~sf0" | findstr /i /v ":Label" >temp.vbs 
for /f "delims=" %%N in ('cscript //nologo temp.vbs') do set pass=%%N 
del temp.vbs 

:Label1 

If %pass%=="okay" echo Valid Password ! & goto PLAN-A 
If not %pass%=="okay" echo Invalid Password !! & goto PLAN-B 

:PLAN-A 
echo continue from here 

:PLAN-B 
echo do something else 

(...)

- 如何獲取用戶信息,驗證它,回到批對於計劃A或計劃B?

正如你看到的,如果我們消除「& goto PLAN」的東西的腳本工作。它將VBS輸入「pass」發送到批處理,批處理回聲「繼續從這裏開始」或「執行其他操作」,其餘代碼應該從同一批處理中繼續。

但是,它不工作...任何幫助,使這個真的工作?

回答

3

您的主要問題是您沒有正確設置文件以便於從批處理文件中提取VBS。您的VBS看起來與批次標籤沒有區別。你過濾掉了「標籤」標籤,但你仍然包含:ini,:BATCH等行。顯然這些會使VBS絆倒。我通過在您的VBS前加上:::並調整您的過濾器來解決問題。沒有必要明確地過濾掉任何標籤。我選擇了3個冒號,因爲單個冒號用於標籤,而2個冒號經常用於註釋。只需通過改變前面冒號的數量,就可以在批處理中嵌入多個獨立的VBS腳本。

我也調整了代碼的一小部分,並撒在一些EXIT/B語句,以便代碼不會經歷。另外你的:MAIN沒有定義,所以我將GOTO註釋掉了,並用EXIT/B代替它。

@echo off 
:Ini 
echo [1] Access database 
echo [2] Main menu 
echo: 
set /p Quest= What do you prefer (1/2)? 
if not '%Quest%'=='' set Quest=%Quest:~0,1% 
if '%Quest%'=='1' goto VBS 
if '%Quest%'=='2' goto BATCH 
echo Invalid option, please try again 
cls 
goto Ini 

:BATCH 
echo Heading for main menu ... 
::goto Main 
exit /b 

:VBS 
:::wscript.echo InputBox("Enter your password","VBScript-Batch") 
findstr "^:::" "%~sf0" >temp.vbs 
for /f "delims=" %%N in ('cscript //nologo temp.vbs') do set pass=%%N 
del temp.vbs 
If "%pass%"=="okay" (
    echo Valid Password ! 
    goto PLAN-A 
) else (
    echo Invalid Password !! 
    goto PLAN-B 
) 

:PLAN-A 
echo continue from here 
exit /b 

:PLAN-B 
echo do something else 
exit /b 
+0

好的。我現在無法測試你的代碼,但我一回家就會測試它。順便說一句,你能檢查我的其他類似但涼爽的鏈接嗎? http://stackoverflow.com/questions/11795483/batch-parsing-to-vbscript-tough-brains-out-there-please – 2012-08-03 12:13:56

+0

嗨,我已經測試和輸入框不會出現。如果您選擇[1],它會迴應「無效密碼」...「做其他事情」。不工作。順便問一下你是否檢查過我的其他鏈接?謝謝 – 2012-08-04 18:57:38

+0

@ user1573858 - ???我不知道你錯在哪裏。該代碼完美適合我。我在第一個提示中輸入1,它給了我VBS輸入框,它向我詢問密碼。我輸入「okay」,然後輸入PLAN-A,其他的輸入到PLAN-B。 – dbenham 2012-08-05 03:42:55