&燃气轮机&燃气轮机;登录屏幕:从批处理到VBscript,再到批处理<&书信电报;

&燃气轮机&燃气轮机;登录屏幕:从批处理到VBscript,再到批处理<&书信电报;,vbscript,login-script,batch-file,Vbscript,Login Script,Batch File,我正在运行一个批处理脚本,用户必须在某个地方访问数据库 此时,用vbscript创建的窗口将提示用户输入登录名和密码。(确定,取消按钮) 如果确认后凭证正确,则批处理将根据planA继续,否则批处理将执行其他操作,并转到planB。如果(取消),它将返回到批次和上面的菜单 @echo off :Ini echo [1] Access database echo [2] Main menu echo: set /p Quest= What do you prefer (1 / 2)?

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

此时,用vbscript创建的窗口将提示用户输入登录名和密码。(确定,取消按钮)

如果确认后凭证正确,则批处理将根据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?
--如何捕获用户信息、验证并返回planA或planB的批处理…
--如何用****屏蔽该密码


非常感谢您的帮助

最好完全切换到vbscript(或者因为您似乎不熟悉vbscript另一种更新、功能更强大的语言,同时又能像Ruby一样轻松使用)。从批处理开始的所有操作也可以在Vbscript中完成,您可以使用菜单提示和密码输入框,如果必须屏蔽,则使用浏览器作为UI,如Rob Vanderwoude这里的脚本 使用此技术,您可以在Internet Explorer中完成所有UI/GUI,并在Vbscript中完成逻辑


如果决定保留批处理方法,则可以使用Wscript.Quit X退出vbs脚本,其中X是脚本完成时传递给windows的错误级别,然后可以在批处理中捕获该错误级别。另一种方法是设置或更改一个环境变量来进行数据传输,最后您可以通过脚本和批处理将数据轻松写入文本文件,但批处理中的数据解析更加困难。

我发现了一种有趣的替代方法,如下所述

批量嵌入的VBSSCcript

@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输入“pass”发送到批处理,批处理从代码的其余部分返回“continue from here”


然而,它并没有发挥应有的作用。有什么帮助可以让这个真正起作用吗

另一种选择是

我在“Internet Explorer版本”的现有VBSSCcript中添加了以下代码:

VBS脚本-命名为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应与用户在inputbox上键入的信息一起发送到c:\。批处理将读取此输入并与设置的密码进行比较,然后继续编码

我怎样才能让它工作??temp.TXT不会生成一个如此等等的


BATCH和VBS的专家们,任何解决这些问题的帮助都是非常受欢迎的

29种观点,没有明确答案?伙计们,有人能更正密码吗?