gpt4 book ai didi

VBScript 和批处理交互

转载 作者:行者123 更新时间:2023-12-04 18:15:36 26 4
gpt4 key购买 nike

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

这时,一个用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
: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

(...)

-- 如何获取用户信息,对其进行验证并返回到planA 或planB 的批处理?

如您所见,如果我们消除“ & goto PLAN”内容,脚本就可以工作。它将 VBS 输入“通过”发送到批处理,批处理回显“从这里继续”或“做其他事情”,其余代码应从同一批处理中继续。

但是,它不工作......任何帮助,使这个 真的工作 ?

最佳答案

您的主要问题是您没有正确设置文件以方便从批处理文件中提取 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

关于VBScript 和批处理交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com