2012-07-27 15 views
0

我正在運行批處理腳本,並且用戶必須訪問某個數據庫。
>>登錄屏幕:從批處理到VB腳本再次批處理<<

此時,用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 
cscript login.vbs 
(...) 

- 如何繼續並使vbs?
- 如何捕獲用戶信息,驗證它並返回計劃A或計劃B的批次...
- 如何使用** **掩蓋該密碼?

幫助將不勝感激!

回答

1

更好地切換到vbscript完全(或者因爲你似乎新的vbscript另一種語言更新和強大,而像Ruby一樣簡單)。您從批處理開始的所有內容也可以在Vbscript中完成,您可以使用提示輸入密碼菜單和輸入框,並且如果必須使用屏蔽,請使用瀏覽器作爲UI,如Rob Vanderwoude的腳本http://www.robvanderwoude.com/vbstech_ui_password.php 使用此技術你可以在Internet Explorer中完成所有的UI/GUI和Vbscript中的邏輯。

如果決定保持批處理方式,則可以使用Wscript.Quit X退出vbs腳本,其中x是腳本完成時傳遞給窗口的錯誤級別,然後可以在該批處理中捕獲該錯誤級別。另一種方法是設置或更改環境變量以進行數據的傳輸,最後您可以在腳本和批處理中輕鬆地將數據寫入文本文件,但是批量解析此文件會更困難。

+0

不能正常工作... :( – 2012-08-02 01:12:37

0

我發現了一個野趣選擇,因爲在批

@echo off 
: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 

echo You entered %pass% 

:Label1 

echo continue from here 

If %pass%=="ok" echo Valid Password ! & goto EOF 
If %pass%=="ok" echo Invalid Password !! & goto EOF 

:EOF 
pause 

下面 http://www.computerhope.com/forum/index.php?topic=103686.0

VBSscript內嵌描述正如你看到的,如果我們消除「& goto EOF」的劇本工作得很好。它將VBS輸入「pass」發送到批處理,批處理回聲「從這裏繼續」,從您的代碼的其餘部分進入。

但是,它不能正常工作。任何幫助,使真的工作?

+0

29個視圖和沒有明確的答案?請大家,任何人都可以更正代碼? – 2012-08-02 01:11:58

0

另一種選擇是....

我已經在現有VBSscript添加了 「Internet Explorer版本」 的代碼:

VBS腳本 - 名爲Password.vbs(見完整的腳本在上面從彼得鏈接)

strPw = GetPassword("Please, type your password:") 
WScript.Echo "Your password is: " & strPw 

Sub Submit_OnClick 
dim filesys, filetxt, FormContent 
Set FormContent = document.getElementById("strPw") 
Set filesys = CreateObject("Scripting.FileSystemObject") 
Set filetxt = filesys.OpenTextFile("C:\\temp.txt", 8, True) 
filetxt.WriteLine(FormContent.value) 
filetxt.Close 
End Sub 

批處理腳本

@echo off 

cscript Password.vbs 

findstr /B /E /M %strPw% temp.txt 
If %ERRORLEVEL% EQU 0 echo Password matched! & goto EOF 
If not %ERRORLEVEL% EQU 0 echo Invalid Password !! & goto EOF 

:eof 
pause 

文件溫度應使用用戶在輸入框中輸入的信息將TXT發送到c:\。該批次將讀取此輸入並與設定的密碼進行比較並繼續編碼...

我該怎麼做這個工作? temp.TXT是不會產生的...

BATCH和VBS的大師們在那裏,任何幫助解決這些問題真的很受歡迎!