0

我正在运行一个批处理脚本,并且用户必须在某个地方访问数据库。

这时,一个用vbscript制作的窗口会提示要求用户输入登录名和密码。(确定,取消按钮)

如果 OK 后凭据正确,则批处理将根据计划 A 继续,否则批处理将执行其他操作以执行计划 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

:VBS
cscript login.vbs
(...)

-- 如何继续制作vbs?
-- 如何捕获用户信息,对其进行验证并返回到 planA 或 planB 的批次...
-- 如何用 ** ** 屏蔽该密码?

帮助将不胜感激!

4

3 回答 3

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 是您在脚本完成时传递给 windows 的错误级别,然后您可以在批处理中捕获该错误级别。另一种方法是设置或更改环境变量以进行数据传输,最后您可以轻松地以脚本和批处理方式将数据写入文本文件,但批量解析更加困难。

于 2012-07-27T12:50:51.587 回答
0

另一种选择是......

我在现有的 VBSscript 中为“Internet Explorer 版本”添加了代码:

VBS SCRIPT - 命名为 Password.vbs(参见以上 Peter 链接中的完整脚本)

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

文件 temp.TXT 应与用户在输入框中键入的信息一起发送到 c:\。该批次将读取此输入并与设置的密码进行比较并继续编码...

我怎样才能使这项工作?temp.TXT 没有生成等等...

BATCH 和 VBS 大师在那里,非常欢迎任何帮助解决这些问题!

于 2012-07-27T20:22:16.687 回答
0

我找到了一个有趣的替代方案,如下所述 http://www.computerhope.com/forum/index.php?topic=103686.0

嵌入在 BATCH 中的 VBSscript

@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

如您所见,如果我们消除 " & goto EOF",脚本运行良好。它将 VBS 输入“通过”发送到批处理,批处理回显“从这里继续”,其余代码从这里开始。

但是,它没有按应有的方式工作。有什么帮助可以使它真正起作用吗?

于 2012-07-27T20:01:13.433 回答